ASP.NET相对路径上传Word转PDF时文件找不到异常解决方案求助
问题根源
你代码里有两个核心错误直接导致该报错:
Application.Documents.Open()方法要求传入的参数是本地Word文件的绝对路径字符串,你当前传入的是IFormFile类型的上传文件对象,Office组件根本无法识别该参数,自然提示文件不存在。- 执行逻辑顺序颠倒:你先执行了Word转PDF的逻辑,之后才把上传的文件流写入本地磁盘,调用转换方法时目标Word文件还没被保存到服务器上,必然找不到文件。
修正后代码(仅修改HttpPost的Index1方法)
[HttpPost] public IActionResult Index1(IFormFile[] files) { // 遍历所有文件 foreach (var file in files) { // 过滤非Word文件,避免无效转换 var ext = Path.GetExtension(file.FileName).ToLower(); if (ext != ".doc" && ext != ".docx") { continue; } // 从浏览器端获取文件名 var fileName = System.IO.Path.GetFileName(file.FileName); // 生成上传文件的存储路径 var filePath = Path.Combine(Directory.GetCurrentDirectory(), "upload", fileName); // 生成转换后PDF的存储路径 var pdfPath = Path.Combine(Directory.GetCurrentDirectory(), "upload", $"{Path.GetFileNameWithoutExtension(fileName)}.pdf"); // 检查是否存在同名文件,存在则删除 if (System.IO.File.Exists(filePath)) { System.IO.File.Delete(filePath); } if (System.IO.File.Exists(pdfPath)) { System.IO.File.Delete(pdfPath); } // 先把上传的Word文件保存到本地 using (var localFile = System.IO.File.OpenWrite(filePath)) using (var uploadedFile = file.OpenReadStream()) { uploadedFile.CopyTo(localFile); } // 保存完成后再执行转换逻辑 var appWord = new Application(); if (appWord.Documents != null) { // 传入本地文件的绝对路径 var wordDocument = appWord.Documents.Open(filePath); if (wordDocument != null) { // 导出PDF到指定路径 wordDocument.ExportAsFixedFormat(pdfPath, WdExportFormat.wdExportFormatPDF); wordDocument.Close(); } appWord.Quit(); // 释放Office进程,避免内存泄漏 System.Runtime.InteropServices.Marshal.ReleaseComObject(appWord); } } ViewBag.Message = "文件上传成功"; // 从服务器获取文件 var model = new FilesViewModel(); foreach (var item in Directory.GetFiles(Path.Combine(Directory.GetCurrentDirectory(), "upload"))) { model.Files.Add( new FileDetails { Name = System.IO.Path.GetFileName(item), Path = item }); } return View(model); }
额外注意事项
- 如果使用Office Interop方案,需要保证服务器上安装了对应版本的微软Office,同时要给站点运行的应用程序池身份开启Office组件的访问权限,否则仍会出现权限类报错。
- 服务端场景更推荐使用无Office依赖的NuGet包实现转换,比如
FreeSpire.Doc,无需安装Office,权限要求更低,也不会出现进程残留的问题。
内容的提问来源于stack exchange,提问作者Panait Rares Horia
相关产品推荐
相关产品推荐

