【问题标题】:Why does asp.net fileupload control corrupt files?为什么 asp.net fileupload 控制损坏的文件?
【发布时间】:2016-05-12 07:16:40
【问题描述】:

我正在使用 FileUpload 控件上传多个文件,它确实成功,但问题是当我在上传后下载文件时,它会损坏,即 .pdf、.docx 等。经检查,我发现问题出在上传控件上,因为上传后我检查了服务器目录中的文件并尝试打开它,但文件抛出错误,即文件已损坏。

我检查了服务器目录中每个上传的文件,它也不起作用,所以问题是它上传不正确

protected void UploadIncomingLetterMaterial(int CaseLetterID)
{
    if (FileUpload1.HasFiles)
    {

        foreach (HttpPostedFile uploadedfiles in FileUpload1.PostedFiles)
        {
            string fileName = Path.GetFileName(uploadedfiles.FileName);
            FileUpload1.PostedFile.SaveAs(Server.MapPath("~/SiteImages/") + fileName);

            mngUploadedMaterialIncomingLetters.InsertUploadedMaterialIncomingLetters(fileName, "", CaseLetterID);
        }

更新:

问题是当我上传多个文件时,它会使所有文件的大小相同。与循环中第一个文件的大小相同。

【问题讨论】:

  • 您的问题目前还不清楚。 “扩展是正确的但仍然不正确”是什么意思? “它打开时大小相同”是什么意思?您还没有解释是什么让您认为文件已损坏 - 您的标题表明您认为文件上传控件不会损坏文件...
  • 您正在获取具有正确扩展名的文件?还检查了服务器中的文件大小(已上传)和原始文件大小?
  • @AlexeiLevenkov 检查更新的问题,我在两行之间进行了编辑
  • @JonSkeet 检查更新的问题,我更改了标题和详细信息
  • @JonSkeet 我刚刚再次检查,问题是当我上传多个文件时,它使所有文件的大小相同,即与第一个上传文件的大小相同

标签: c# asp.net ajax file-upload webforms


【解决方案1】:

看起来是这个问题:

FileUpload1.PostedFile.SaveAs(Server.MapPath("~/SiteImages/") + fileName);

这是多次保存 first 文件 - 您正在尝试将当前引用的文件保存为 uploadedfiles(应该是单数)。看起来你应该有:

foreach (HttpPostedFile uploadedFile in FileUpload1.PostedFiles)
{
    string fileName = Path.GetFileName(uploadedFile.FileName);
    uploadedFile.SaveAs(Server.MapPath("~/SiteImages/") + fileName);
    mngUploadedMaterialIncomingLetters.InsertUploadedMaterialIncomingLetters(fileName, "", CaseLetterID);
}

【讨论】:

  • 让我试试先生等等先生
  • @user5820210:这对我来说似乎不太可能。我强烈怀疑您实际上并没有重建,或者类似的东西。与许多人使用的控件存在根本缺陷相比,这似乎是对问题的更可能的解释(鉴于现有行为是由您的错误解释的)。
  • 我重建了网站并运行了,但还是同样的问题
  • @user5820210:我建议您添加一些诊断程序来证明您实际上正在运行新代码 - 例如在要保存的文件的名称中包含“newcode”。我仍然认为,与您发现控件中的致命错误相比,您没有真正运行新代码的可能性要大得多。
  • @user5820210:那你应该问一个单独的问题——这是两个不同的问题,你应该只问每个帖子一个问题。 (并提供更多信息,而不仅仅是“使它们损坏” - 下载文件后文件中的内容是什么?大小是否正确?它们总是有点长吗?等等......)
猜你喜欢
  • 2012-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多