第一步:在我的MVC项目中,我有一个允许上传文件的Div。将文档上传到Web API
<div id="modalUpload" style="display:none">
Select a file:
<input id="upload" type="file" name="upload" /><br />
Description:
<input id="documentDescription" type="text" /><br />
<input type="button" value="Submit" id="submitUpload" data-bind="click:function(){ $root.upload() }">
</div>
第二步:在JavaScript我将文件上传至网络API与POST请求:(例如,与所述的XMLHttpRequest方法)
self.upload = function() {
var file = document.getElementById("upload").files[0];
var xhr = new XMLHttpRequest();
xhr.open('post', "/API/document/addDocument/", true);
xhr.send(file);
}
第三步:这是我addDocument功能上在Web API,它预计Document对象,像这样:
[HttpPost]
[Route("{controller}/addDocument")]
public string Post([FromBody]Document doc)
{
.......
}
我的问题是,我该怎么过帐凭证的API作为Documen t对象?是否可以设置POST数据的类型?
在我的JavaScript代码,我有一个Document对象:
var Document = function (data) {
this.id = ko.observable(data.id);
this.name= ko.observable(data.name);
this.size= ko.observable(data.zise);
}
但我不知道如何将它们之间进行连接。
当我尝试这样做:
var file = new Document(document.getElementById("upload").files[0]);
我得到了以下错误:
415 (Unsupported Media Type)
任何帮助将是非常赞赏。
感谢您的回复,我不在乎如何使用jquery,但我不知道如何去做,您能否列举一个例子?谢谢! – user3378165
我无法指导您完成。 Google'xhr文件上传'提供了很多很好的例子。您的错误消息正在由您的服务器端API生成。你需要更好地理解XHR发送文件上传的期望。 – kevintechie
我看到它会太复杂,所以最后我没有把它作为一个对象上传,然后它完美地工作。感谢您的帮助。 – user3378165