1

我在获取下载提示时遇到问题。在下面的代码中,首先允许用户上传要压缩的文件。压缩文件后,应向用户提供压缩文件。但是在下面的代码下载提示中没有出现,也没有显示任何错误。请通过更正我 的代码来帮助我查看代码:

function CompressFile(box) {
   var file = document.getElementById('fileComp');
   if (file.value == "") {
       alert("Choose a file to upload");
       return false;
   }
   dhtmlx.modalbox.hide(box);
   var fd = new FormData();
   fd.append('file', file.files[0]);
   var xhr = new XMLHttpRequest();
   xhr.open('POST', '/FileUpload/Compress', true);
   xhr.send(fd);

}

控制器代码:

 public ActionResult Compress(HttpPostedFileBase file)
{
    var supportedType = new[] { "pdf" };
    var fileExt = System.IO.Path.GetExtension(file.FileName).Substring(1);
    var filename = Path.GetFileNameWithoutExtension(file.FileName) ?? "";
    if (file.ContentLength > 0 && supportedType.Contains(fileExt))
    {
        string filePath = Path.Combine(HttpContext.Server.MapPath(_uploadPDF), Path.GetFileName(file.FileName));
        file.SaveAs(filePath);
        PdfReader reader = new PdfReader(filePath);
        string name = DateTime.Now.ToString("ddMM_HHmmss");
        name = Server.MapPath(_fileUploadPath + name + ".pdf");
        PdfStamper stamper = new PdfStamper(reader, new FileStream(name, FileMode.Create), PdfWriter.VERSION_1_5);
        stamper.FormFlattening = true;
        stamper.SetFullCompression();
        stamper.Close();
        string fn = System.IO.Path.GetFileName(name);
        return base.File(name, "application/pdf",fn);
    }
    else
    {
        return View();
    }
}
4

1 回答 1

0

问题是您使用的是 Ajax。您不能通过 Ajax 下载文件。您需要对 ActionMethod 进行常规 POST。这样,浏览器可以将文件发回给您,并提示用户将其保存在哪里。

于 2013-05-22T08:11:34.153 回答