我正在开发一个网页,用户可以下载他们的Resume for Edit。所以我有一个下载文章的链接。我使用以下代码进行下载。
DataTable dt = user.getUserDetails(2);
user.WriteFileFromDBbyUserArticleID(Server.MapPath(Convert.ToString(dt.Rows[0].ItemArray[0])), Convert.ToInt32(2), "CV");
FileUtil.writeFileToResponse(Server.MapPath(Convert.ToString(dt.Rows[0].ItemArray[0])), Response);
////////////////////////////////////////////////
public void WriteFileFromDBbyUserArticleID(string FilePath, int UserID, string FileType)
{
DataAccessLayer dal = new DataAccessLayer();
string selectQuery = "Select Articles.Users_WriteFileFromDB(?,?,? ) from Articles.Users";
DbParameter[] parm = new DbParameter[3];
parm[0] = dal.GetParameter();
parm[0].ParameterName = "@FilePath";
parm[0].Value = FilePath;
parm[1] = dal.GetParameter();
parm[1].ParameterName = "@UserID";
parm[1].Value = UserID;
parm[2] = dal.GetParameter();
parm[2].ParameterName = "@FileType";
parm[2].Value = FileType;
DataTable dtArticleStatus = dal.ExecuteDataTable(selectQuery, parm);
}
///////////////////////////////////////////////////////////////////////////
static public void writeFileToResponse(string filePath,HttpResponse Response)
{
try
{
string FileName = Path.GetFileName(filePath);
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=" + FileName);
Response.WriteFile(filePath);
Response.Flush();
File.Delete(filePath);
Response.End();
}
catch (System.Exception ex)
{
}
}
我在“Response.WriteFile(filePath);”行中收到错误如下
sys.webforms.pagerequestManagerparserErrorException:无法解析从服务器收到的消息。此错误的常见原因是通过调用response.write(),响应过滤器,httpModule或服务器跟踪来修改响应。 详细信息:解析附近时出错......
我该如何解决这个问题?
答案 0 :(得分:1)
public class FileHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
if (context.Request["file"] != null)
{
try
{
string file = context.Server.MapPath("~/files/" + context.Request["file"].ToString());
FileInfo fi = new FileInfo(file);
if (fi.Exists)
{
context.Response.ClearContent();
context.Response.AddHeader("Content-Disposition", "attachment; filename=" + fi.Name);
context.Response.AddHeader("Content-Length", fi.Length.ToString());
string fExtn = "video/avi";
context.Response.ContentType = fExtn;
context.Response.TransmitFile(fi.FullName);
context.Response.End();
}
}
catch (Exception ex)
{
Trace.WriteLine(ex.Message);
}
}
}
public bool IsReusable
{
get { return true; }
}
}
答案 1 :(得分:0)
答案 2 :(得分:0)
您使用的是ASP.NET吗?尝试使用HtmlInputFile进行上传。
答案 3 :(得分:0)
要上传文件,您可以使用asp:FileUpload
控件和简单使用SaveAs
方法。但请注意,如果将其与部分更新对象(asp:UpdatePanel
)结合使用,则必须设置触发器。如果您不使用触发器asp:FileUpload
,可以重置控件...