gpt4 book ai didi

c# - FileStreamResult 不返回主体

转载 作者:行者123 更新时间:2023-12-05 06:39:27 26 4
gpt4 key购买 nike

我正在尝试通过 IIS7 来回传输文件。

我的操作方法如下:

public ActionResult GiveItBack()
{
var inFile = Request.Files[0];
var fileStream = new FileStream(Path.GetTempPath() + "uploadedFile.tif", FileMode.OpenOrCreate);
inFile.InputStream.Position = 0;
inFile.InputStream.CopyTo(fileStream);
return new FileStreamResult(fileStream, "image/tiff");
}

我用 fiddler 调用它,文件在服务器上上传和创建,但 fiddler 显示“响应没有正文”消息而不是图像(文件确实是一个 tif)。原始响应是

HTTP/1.1 200 OK
Cache-Control: private
Content-Type: image/tiff
Server: Microsoft-IIS/8.0
X-AspNetMvc-Version: 5.2
X-AspNet-Version: 4.0.30319
X-SourceFiles: =?UTF-8?B?QzpcQXJiZWl0c2JlcmVpY2hcUHJvamVrdGUgLSBmcmVtZFxBbXBzMyBQaXBlc1xLaXR0ZWxiZXJnZXIuQU1QUzMuV2ViU2VydmljZVxDb21tYW5kQ2hhaW5cRG9pbmc=?=
X-Powered-By: ASP.NET
Date: Wed, 14 Jun 2017 12:48:22 GMT
Content-Length: 0

如您所见,内容长度为零。为什么图像不回来?

最佳答案

在返回结果之前,您应该将 fileStream 实例的 Position 重置回 0。

来自 CopyTo documentation

Remarks

Copying begins at the current position in the current stream, and does not reset the position of the destination stream after the copy operation is complete.

另外添加一个try/catch,如果FileStream有异常就处理掉,然后重新抛出。

有变化的代码

public ActionResult GiveItBack()
{
var inFile = Request.Files[0];
var fileStream = new FileStream(Path.GetTempPath() + "uploadedFile.tif", FileMode.OpenOrCreate);
try {
inFile.InputStream.Position = 0;
inFile.InputStream.CopyTo(fileStream);
fileStream.Position = 0;
return new FileStreamResult(fileStream, "image/tiff");
} catch {
fileStream.Dispose();
throw;
}
}

关于c# - FileStreamResult 不返回主体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44545506/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com