servicestack,Php,Curl,Upload,servicestack" /> servicestack,Php,Curl,Upload,servicestack" />

Php将文件发布到ServiceStack API

Php将文件发布到ServiceStack API,php,curl,upload,servicestack,Php,Curl,Upload,servicestack,我需要帮助发布一个文件(doc、Docx或pdf)到使用PHP的servicestackapi php卷曲设置: $curl = curl_init(); $cfile = new CURLFile('C:\\test.doc'); $params = array('Data' => $cfile); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl,

我需要帮助发布一个文件(doc、Docx或pdf)到使用PHP的servicestackapi

php卷曲设置:

$curl = curl_init();
$cfile = new CURLFile('C:\\test.doc');
$params = array('Data' => $cfile);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt ($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_POSTFIELDS,$params);
API设置:

 public object Any([FromBody]ExampleRequest exampleRequest){
...
}

public class ExampleRequest : IReturn<ExampleResponse>
    {
        public object Data { get; set; }
    }
public object Any([FromBody]ExampleRequest ExampleRequest){
...
}
公共类示例请求:IReturn
{
公共对象数据{get;set;}
}
ExampleRequest中有一个名为Data of type object的属性


我不确定为什么数据总是空的。任何帮助都将不胜感激

[FromBody]
不是ServiceStack属性,在ServiceStack服务中无效

键入的请求数据只需与
ExampleRequest
的模式匹配即可。所有ServiceStack服务都可以通过类似JSON的任何一种格式填充。您需要确保您的请求正在发送与其
内容类型
HTTP请求头匹配的正确格式

建议您永远不要使用
对象
,否则需要说明反序列化
对象
类型的原因

通过定义
Data
属性,您告诉ServiceStack接受带有Data属性的请求,如(如JSON):

如果发送平面键/值对,请考虑使用<代码>字典<代码>代替<代码>对象< /代码>

自己解析原始请求主体 您的请求DTO应该指定模式的类型,如果您不想这样做,您可以告诉ServiceStack跳过对请求正文的反序列化,并让您的服务通过以下方式解析原始请求正文,例如:

实施:

public object Any(ExampleRequest request)
{
    byte[] bytes = request.RequestStream.ReadFully();
    string text = bytes.FromUtf8Bytes(); //if text was sent
}

[FromBody]
不是ServiceStack属性,在ServiceStack服务中无效

键入的请求数据只需与
ExampleRequest
的模式匹配即可。所有ServiceStack服务都可以通过类似JSON的任何一种格式填充。您需要确保您的请求正在发送与其
内容类型
HTTP请求头匹配的正确格式

建议您永远不要使用
对象
,否则需要说明反序列化
对象
类型的原因

通过定义
Data
属性,您告诉ServiceStack接受带有Data属性的请求,如(如JSON):

如果发送平面键/值对,请考虑使用<代码>字典<代码>代替<代码>对象< /代码>

自己解析原始请求主体 您的请求DTO应该指定模式的类型,如果您不想这样做,您可以告诉ServiceStack跳过对请求正文的反序列化,并让您的服务通过以下方式解析原始请求正文,例如:

实施:

public object Any(ExampleRequest request)
{
    byte[] bytes = request.RequestStream.ReadFully();
    string text = bytes.FromUtf8Bytes(); //if text was sent
}

请更新您的问题以显示原始HTTP请求/响应标题和
ExampleRequest
DTO。请更新您的问题以显示原始HTTP请求/响应标题和
ExampleRequest
DTO。
public object Any(ExampleRequest request)
{
    byte[] bytes = request.RequestStream.ReadFully();
    string text = bytes.FromUtf8Bytes(); //if text was sent
}