Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
接受通过ajax在Post请求中发送的web API(C#)中的ArrayBuffer(不使用表单)_C#_Asp.net Mvc 4_Sharepoint 2013 - Fatal编程技术网

接受通过ajax在Post请求中发送的web API(C#)中的ArrayBuffer(不使用表单)

接受通过ajax在Post请求中发送的web API(C#)中的ArrayBuffer(不使用表单),c#,asp.net-mvc-4,sharepoint-2013,C#,Asp.net Mvc 4,Sharepoint 2013,我有一个将文件上传到服务器的ajax方法它将ArrayBuffer(从读取文件中键入的js数组)发送到服务器,并附加3个参数。 端点是用C#WebAPI应用程序编写的 这是我的C#端点- public async Task<HttpResponseMessage> UploadFile(string param1, string param2, string fileName, [FromBody] byte[] arrayBuffer) { try {

我有一个将文件上传到服务器的ajax方法它将ArrayBuffer(从读取文件中键入的js数组)发送到服务器,并附加3个参数。 端点是用C#WebAPI应用程序编写的

这是我的C#端点-

public async Task<HttpResponseMessage> UploadFile(string param1, string param2, string fileName, [FromBody] byte[] arrayBuffer)
{
    try
    {         
       var response = await xyz.UploadFile(param1, param2, fileName, arrayBuffer);
       var httpResponse = Request.CreateResponse(HttpStatusCode.Created);
       httpResponse.Content = new StringContent(response, Encoding.UTF8, "application/json");
       return httpResponse;
    }
    catch (Exception e)
    {
        return Request.CreateResponse(HttpStatusCode.InternalServerError, e.ToString());
    }
}
公共异步任务上载文件(字符串param1,字符串param2,字符串文件名,[FromBody]字节[]数组缓冲)
{
尝试
{         
var response=await xyz.UploadFile(param1,param2,fileName,arrayBuffer);
var httpResponse=Request.CreateResponse(HttpStatusCode.Created);
httpResponse.Content=newstringcontent(响应,Encoding.UTF8,“application/json”);
返回httpResponse;
}
捕获(例外e)
{
return Request.CreateResponse(HttpStatusCode.InternalServerError,例如ToString());
}
}
我的问题是,在C#中,arrayBuffer参数的类型应该是什么,以便用我在js请求中发送的二进制数据填充它

发送到Sharepoint的Rest API创建文件的请求相同,我已经检查了请求是否正确。 唯一的问题是我的端点无法将RequestBody中发送的数据与其参数匹配

编辑

现在,我们已经将内容更改为base64字符串。无法尝试我们必须交付的新事物。
如果有人带着同样的问题来到这里,您可能也必须这样做。

您可以使用HttpPostedFileBase读取二进制文件

public async Task<HttpResponseMessage> UploadFile(string param1, string param2, string fileName, [FromBody] HttpPostedFileBase  arrayBuffer)
{

     arrayBuffer.InputStream
公共异步任务上载文件(字符串param1、字符串param2、字符串文件名,[FromBody]HttpPostedFileBase arrayBuffer)
{
arrayBuffer.InputStream

如果您使用的是ASP.NET Core(如标签所示),那么使用IFormFile接口应该允许您检索上传的文件:抱歉,不使用Core,这是只有ASP和MVC可以共享您的请求负载吗?您确定它不是
多部分/表单数据
?尝试在类似Fiddler的代理中查看请求。