asp.net mvc-发布JSON和文件数据,并从JavaScript到mvc Web API控制器
asp.net mvc - Post JSON and file data and from JavaScript to MVC Web API Controller
我想用JavaScript上传一个大文件,即使用file API对其进行切片,然后将切片blob发布到服务器。我可以这样做:
Javascript:
// file is a file from an file select input element
var data = new FormData();
data.append('Slice', file.slice(start, end));
$http.post('/api/upload', data); //I'm using AngularJS
MVC Web API控制器:
public async Task Post()
{
var provider = new MultipartMemoryStreamProvider();
await Request.Content.ReadAsMultipartAsync(provider);
var stream = provider.Contents.First().ReadAsStreamAsync().Result;
没有文件切片,我可以很容易地发布JSON,并使用模型绑定来获取它:
Javascript:
var model = {};
model.CurrentBlock = 0;
model.FileName = file.name;
$http.post('/api/upload', model);
服务器:
public class UploadModel
{
public string CurrentBlock { get; set; }
public string FileName { get; set; }
}
public async Task Post(UploadModel model)
{
}
我不知道如何在一个请求中同时做到这两件事——发布一个文件切片和一些JSON元数据。我似乎无法创建任何模型属性和blob数据的JSON对象,这些对象将由模型绑定的控制器方法参数的任何组合获取。我试过类似的东西:
public async Task<UploadModel> Post(UploadModel model, HttpPostedFileBase file)
或者将文件blob直接添加到模型中:
var model = {};
model.CurrentBlock = 0;
model.FileName = file.name;
model.Payload = file.slice(start, end)
$http.post('/api/upload', model);
但它从未实现。我肯定我错过了一些简单的东西。
下载Fiddler并在撰写文章时运行它。它将向您显示发布的确切内容(您可能需要使用您的机器名而不是localhost来打开网站)。
您可能还需要以不同的方式传递参数:
$http.post('/api/upload?filename=' + model.name, model.PayLoad);
在服务器上,你会用类似的东西来阅读
HttpPostedFileBase request = Request.Files["Slice"];
以下是如何做到这一点的更详细示例的链接:http://www.dotnetcurry.com/showarticle.aspx?ID=894
相关文章:
- 通过javascript/jquery从html表中获取值并进行计算
- 使用javascript提交表单并从字段/单选框/复选框/文本区域获取数据
- Javascript:如何从URL中抓取片段并将其写入一些PHP
- JavaScript:在XML中搜索节点并从该节点获取数组
- 动态插入并从数组中检索键值对 - Javascript
- JavaScript-在数组中查找元素,并从用户提示中处理null
- Javascript不起作用,但当放置断点并从chrome调试器工具中单击文件时,它可以正常工作
- 将image从css调用为javascript并添加整数值
- javascript悬停图像并从左上到右下显示
- javascript:检查鼠标是否按下并从零开始计数,x秒后重定向
- 如何将 JavaScript 文件(.js 文件)添加到 C# 项目并从 C# 代码调用 JavaScript 方法
- 如何使用一些变量参数从javascript函数调用 asp.net C#函数并从C#函数获取字符串返回
- Javascript - 如何从文件加载变量并每 3 秒刷新一次
- 如何从 javascript 调用 url 并从 url 到 javascript 获取响应
- 使用 javascript 打开一个窗口,并从外部源加载 HTML 内容
- 将变量从 PHP FORM 传递到 JAVASCRIPT 并使用 JQUERY 更新数据库
- 使用 JavaScript 加密字符串并从服务器端 (Java) 解密
- Javascript对象通信并从其他对象获取参数
- JavaScript/HTML5 从表单中获取 URL 并在新的 Window iframe 中打开它
- 如何将变量传递给javascript并从php返回