Aspose报System.UnauthorizedAccessException,如何指定文件输出目录?
直接使用"output.xlsx"作为保存路径时,Aspose会默认将文件写入程序的当前工作目录(通常是网站根目录或系统临时目录),这类目录往往没有写入权限,导致触发System.UnauthorizedAccessException。你只需将保存路径替换为已确认有写入权限的服务器路径即可,具体操作如下:
操作步骤
- 确认你拥有写入权限的服务器路径,比如服务器本地路径
@"E:\AllowedOutputDir",或者ASP.NET项目中的安全目录(如~/App_Data,该目录默认具备写入权限)。 - 使用
Path.Combine()方法拼接路径和文件名,避免手动拼接导致的路径分隔符错误。 - 将完整路径传入
document.Save()方法。
修改后的代码示例
public JsonResult ConvertPDFtoXLSX(FormCollection formCollection) { var inputFile = Request.Files[0]; // 加载PDF文件 var document = new Document(inputFile.InputStream); // 替换为你有权限的服务器路径 string safeOutputPath = @"E:\AllowedOutputDir"; // 或者使用Server.MapPath("~/App_Data/OutputFiles") string outputFilePath = Path.Combine(safeOutputPath, "output.xlsx"); // 保存文件到指定路径 document.Save(outputFilePath, new ExcelSaveOptions()); return Json(new { success = true, }, JsonRequestBehavior.AllowGet); }
额外注意事项
- 如果使用相对路径,务必通过
Server.MapPath()将其转换为服务器绝对路径,避免路径解析错误。 - 确保目标目录的NTFS权限已授予应用程序池标识(如IIS的
IIS AppPool\你的应用池名称)写入权限。
内容的提问来源于stack exchange,提问作者rd1218
相关产品推荐
相关产品推荐

