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

标签 c# asp.net-mvc-4 sharepoint-2013

我有一个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/

相关文章:

.net - Global.asax ASP.Net Web API 中的 GlobalConfiguration.Configuration.EnsureInitialized() 是什么

c# - 我将如何解析可能格式错误的整个 XML 文件?

c# - 如果路径中的目录不存在,CloudFile.Exists()/ExistsAsync() 会抛出 403(未经授权)?

javascript - Razor Dropdown onchange 事件未触发始终未定义

asp.net-mvc - 如何创建 MVC 4 @Html.TextBox 类型 ="file"?

javascript - 如何使用 CSS 缩放基于空白的背景图像

jquery - REST 上传到 SharePoint 2013 在线文档库后获取项目 ID

javascript - 更改 SharePoint 列表行的颜色

c# - 与 Microsoft Enterprise Library 共享 MySQL 连接

c# - 生成随机数之前必须设置RNG(RandomUtils.Random)