1

我正在使用 MVC 4、C# 4 和 ajax 发布带有文件输入的表单。一切正常,除了我可以看到正在写入服务器的文件,但它似乎被锁定,直到我手动刷新页面。所以看起来好像有什么东西在锁定它,即在写入过程中我没有关闭什么东西等等?

在我的控制器中,我捕获文件 InputStream 并将其传递给服务层。

控制器捕获代码:

if (Request.Files.Count > 0)
            {
                file = Request.Files[0]; //Uploaded file
                fileName = file.FileName;
                mimeType = file.ContentType;
                fileContent = file.InputStream;
            }

服务层代码,其中 fileStream 是 Stream 类型,是从控制器中的 file.InputStream 传入的。

//Write file to disk path
                fileStream.CopyTo(File.OpenWrite(diskPath + newfileName));
                fileStream.Flush();
                fileStream.Close();
4

1 回答 1

1

将其包装在 using 语句中有效并且不会锁定文件

using (var output = File.OpenWrite(diskPath + newfileName))
                {
                    using (var input = fileStream)
                    {
                        input.CopyTo(output);
                    }
                }
于 2013-02-22T22:52:45.040 回答