gpt4 book ai didi

c# - 是否可以使用 servicestack 上传文件和发布数据?

转载 作者:可可西里 更新时间:2023-11-01 09:13:45 24 4
gpt4 key购买 nike

我希望能够发布一个文件并作为该发布的一部分添加数据。

这是我的:

            var restRequest = new RestRequest(Method.POST);

restRequest.Resource = "some-resource";
restRequest.RequestFormat = DataFormat.Json;

string request = JsonConvert.SerializeObject(model);
restRequest.AddParameter("text/json", request, ParameterType.RequestBody);

var fileModel = model as IHaveFileUrl;

var bytes = File.ReadAllBytes(fileModel.LocalStoreUrl);

restRequest.AddFile("FileData", bytes, "file.zip", "application/zip");


var async = RestClient.ExecuteAsync(restRequest, response =>
{
if (PostComplete != null)
PostComplete.Invoke(
new Object(),
new GotResponseEventArgs
<T>(response));
});

它可以正常发布文件,但数据不存在 - 这甚至可能吗?

[更新]

我修改了代码以使用多部分 header :

            var restRequest = new RestRequest(Method.POST);

Type t = GetType();
Type g = t.GetGenericArguments()[0];

restRequest.Resource = string.Format("/{0}", g.Name);
restRequest.RequestFormat = DataFormat.Json;
restRequest.AddHeader("content-type", "multipart/form-data");

string request = JsonConvert.SerializeObject(model);
restRequest.AddParameter("text/json", request, ParameterType.RequestBody);

var fileModel = model as IHaveFileUrl;

var bytes = File.ReadAllBytes(fileModel.LocalStoreUrl);

restRequest.AddFile("FileData", bytes, "file.zip", "application/zip");


var async = RestClient.ExecuteAsync(restRequest, response =>
{
if (PostComplete != null)
PostComplete.Invoke(
new Object(),
new GotResponseEventArgs
<T>(response));
});

仍然没有运气......有任何指示吗?

最佳答案

我不是 C# 方面的专家,但我在 Grails/Java 中对多部分请求使用了相同的原则。

一些指针(ServiceStack/C#)
Multipart Form Post
MSDN MIME Message
ServiceStack File Attachment

Java对应:
Posting File and Data as JSON in REST Service

希望对您有所帮助。

关于c# - 是否可以使用 servicestack 上传文件和发布数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16817612/

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