我有一个ajax方法用于将文件上传到服务器。 - 它将 ArrayBuffer(读取文件的 js 类型数组)发送到服务器,并添加 3 个参数。 Endpoint 是用 C# Web API 应用程序编写的。
这是我的 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());
}
}
我的问题是 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
关于c# - 接受通过ajax在Post请求中发送的Web API(C#)中的ArrayBuffer(不使用表单),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59787019/