【发布时间】:2011-10-28 15:45:42
【问题描述】:
网络应用程序,c#.NET 我在更新面板中有一个多视图,并且有三个视图。 在第三个视图中,我正在上传一个文件及其工作。 然后在第一个视图中我需要下载文件。 我做到了。 我想在下载功能之后再添加一个 AsyncFileUpload 控件。 问题是上传工作但如果我先下载文件然后尝试上传文件,它就不起作用(在同一视图中)。 如果我不下载文件并上传,它可以工作,但如果我下载然后上传文件则无法工作。 上传文件的代码如下。
string filename = Path.GetFileName(AsyncFileUpload1.FileName);
string ext = Path.GetExtension(filename);
if (ext == ".exe" || ext == ".EXE" || ext == ".dll" || ext == ".DLL" || ext == ".config" || ext == ".CONFIG" || ext == ".com" || ext == ".COM")
{
fName = null;
lblStatus.Text = "You cant upload " + ext.ToString() + " Files";
}
else
{
string newfilename = e.filename;
string strPath = MapPath("../MsgAttach/") + Path.GetFileName(newfilename);
AsyncFileUpload1.SaveAs(strPath);
}
这是下载文件的代码。
string filename = hd_file.Value.ToString();
string filepath = MapPath("../MsgAttach/" + filename);
if (File.Exists(filepath))
{
byte[] buffer;
using (FileStream fileStream = new FileStream(filepath, FileMode.Open))
{
int fileSize = (int)fileStream.Length;
buffer = new byte[fileSize];
// Read file into buffer
fileStream.Read(buffer, 0, (int)fileSize);
}
Response.Clear();
Response.Buffer = true;
Response.BufferOutput = true;
Response.ContentType = "application/x-download";
Response.AddHeader("Content-Disposition", "attachment; filename=" + filename);
Response.CacheControl = "public";
// writes buffer to OutputStream
Response.OutputStream.Write(buffer, 0, buffer.Length);
Response.End();
}
可能是什么问题?
【问题讨论】:
-
你能比“不工作”更准确吗?
-
当我第一次下载文件然后尝试上传文件时,下载的文件将再次下载......
-
除了其他错误之外,您忽略了调用
FileStream.Read的结果。你永远不应该假设调用Stream.Read会在一次调用中读取你想要的所有数据。 -
你到底是什么意思?您只显示了文件上传代码路径的 部分 - 之后会发生什么?回应是什么?
-
它就像电子邮件工具一样,当你收到邮件时,首先你通过下载检查附件,然后当你想回复时附上你的文件。这里的问题是下载作品,上传作品但下载附件后,上传无法回复。
标签: c# file-upload updatepanel