gpt4 book ai didi

c# - 使用 multipart/form-data 上传 - 无法在自托管服务中检索文件

转载 作者:可可西里 更新时间:2023-11-01 17:10:25 26 4
gpt4 key购买 nike

我正在使用 ServiceStack 网络服务来处理图像上传。

当通过 AppHostBaseIIS 中托管此服务时,一切正常。

现在我已经切换到使用 AppHostHttpListenerBase 在控制台应用程序中运行的自托管服务,突然间我无法再访问上传的数据。

我正在使用以下属性获取文件:

var uploadedFiles = base.Request.Files;

自托管时,此 IHttpFile 数组为空。当托管在 ISS 中时,它包含上传内容。

客户端正在发送一个Content-Typemultipart/form-data的请求,如下所示:

POST http://localhost:8081/upload/aaa HTTP/1.1
Accept: application/json
Content-Type: multipart/form-data; boundary="607a4dcf-585a-483b-b7dd-9f30d902e4a8"
Host: localhost:8081
Content-Length: 69553

--607a4dcf-585a-483b-b7dd-9f30d902e4a8
Content-Type: application/octet-stream
Content-Disposition: form-data; name=file; filename=file; filename*=utf-8''file

**** IMAGE DATA ****
--607a4dcf-585a-483b-b7dd-9f30d902e4a8--

我使用的是 NuGet 的 ServiceStack 4.0.5 版。宿主项目正在运行 .NET 4.5。

这在自托管时不应该工作,还是我必须配置一些东西才能使其工作?

最佳答案

我已经测试了在新的 v4 项目中使用 ServiceStack 上传文件。

程序.cs

using System;
using ServiceStack;

namespace Testv4
{
class MainClass
{
public static void Main()
{
var appHost = new AppHost(500);
appHost.Init();
appHost.Start("http://*:8082/");
Console.ReadKey();
}
}

public class TestApp
{
[Route("/upload", "POST")]
public class UploadFileRequest {}

public class TestController : Service
{
public void Any(UploadFileRequest request)
{
Console.WriteLine(Request.Files.Length);
}
}
}

public class AppHost : AppHostHttpListenerPoolBase
{
public AppHost(int poolSize) : base("Test Service", poolSize, typeof(TestApp).Assembly)
{
}

public override void Configure(Funq.Container container)
{
}
}
}

index.html

<!doctype html>
<html>
<head>
<title>Test</title>
</head>
<body>
<form action="/upload" method="POST" enctype="multipart/form-data">
<h1>Upload File</h1>
<input type="file" name="File1" />
<input type="submit" value="Upload" />
</form>
</body>
</html>

HttpListener 要求在文件名周围引用 Content-Disposition header

content-disposition: form-data; name="File1"; filename="somefile.jpg"

关于c# - 使用 multipart/form-data 上传 - 无法在自托管服务中检索文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21091172/

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