【发布时间】:2017-11-26 20:03:36
【问题描述】:
我有一个适用于 chrome 的文件上传代码,但在 IE 上会引发以下错误。
"IOException: 进程无法访问文件 'path\filename',因为它正被另一个进程使用。 System.IO.__Error.WinIOError(int errorCode, string maybeFullPath) System.IO.FileStream.Init(字符串路径,FileMode 模式,FileAccess 访问,int 权限,bool useRights,FileShare share,int bufferSize,FileOptions 选项,SECURITY_ATTRIBUTES secAttrs,字符串 msgPath,bool bFromProxy,bool useLongPath,bool checkHost) System.IO.FileStream..ctor(字符串路径、FileMode模式、FileAccess访问、FileShare共享) System.IO.File.OpenWrite(字符串路径) RES.Controllers.DataHandling.DataUploadController+d__5.MoveNext() 在 DataUploadController.cs +
控制器动作方法如下:
public async Task<IActionResult> Upload(UploadedData data)
{
var filename=string.Empty;
if (ModelState.IsValid)
{
var file = data.File;
var parsedContentDisposition =
ContentDispositionHeaderValue.Parse(file.ContentDisposition);
filename = Path.Combine(_hostingEnvironment.ContentRootPath,
"UplaodedFiles", parsedContentDisposition.FileName.Trim('"'));
using (var stream = System.IO.File.OpenWrite(filename))
{
await file.CopyToAsync(stream);
}
}
}
查看下面的模型:
public class UploadedData
{
public IFormFile File { get; set; }
}
我可以想象代码没有任何问题,因为它适用于 Chrome。有谁知道 IE 的问题是什么?
【问题讨论】:
-
filename是什么?请显示完整的[HttpPost] Upload方法。 -
添加了http post方法和视图模型
-
使用 (var stream = System.IO.File.OpenWrite(filename)) { await file.CopyToAsync(stream); }
-
如果您查看异常消息,很明显:System.IO.File.OpenWrite(filename)
标签: c# asp.net asp.net-mvc google-chrome internet-explorer