我需要使用剔除js上传所有类型的文件。我正在使用MVC 4.0,需要将文件分别保存在一个文件夹中。上传文件后,我需要在Grid(文件名,创建日期和文件类型)中显示它。
这是我的“查看”和“包含的淘汰赛”脚本。
var ViewModel = function () {
var self = this;
self.fileInput = ko.observable();
self.fileName = ko.observable();
var Data = {
enter code here
file: self.fileInput,
FileName: self.fileName
};
self.save = function () {
//Ajax call to Insert the Employee
$.ajax({
type: "POST",
url: "/Home/FileUpload",
data: ko.toJSON(Data),
contentType: "application/json",
dataType: 'json',
//cache: false,
mimeType: "multipart/form-data",
//processData: false,
success: function () {
alert("successful");
},
error: function () {
alert("fail");
}
});
}
}
var vm = new ViewModel();
ko.applyBindings(vm);
<html>
<body>
<div>
<form method="post">
<span>File</span>
<input type="file" id="fileUpload" name="fileUpload" data-bind="file: {data: fileInput, name: fileName}" />
<input type="button" id="btnUpload" data-bind="click: save" value="Upload" formenctype="multipart/form-data" />
</form>
</div>
</body>
</html>
emphasized text
所以请帮我,因为我是新手。
最佳答案
首先,您需要制作一个FormData对象,然后查找文件并将其附加到FormData。
var data = new FormData();
var files = $("#yourfileID").get(0).files;
data.append("KeyName", files[0]);
现在将数据发送到Controller进行ajax调用。
var ajaxRequest = $.ajax({
type: "POST",
url: yourURL,
contentType: false,
processData: false,
data: data ,
success: function (data) {
//your callback goes here
}
});
现在,在您的控制器内部,您可以执行以下操作
public HttpResponseMessage AcgDocumentUpload() {
if (HttpContext.Current.Request.Files.AllKeys.Any()) {
var httpPostedFile = HttpContext.Current.Request.Files["KeyName"];
}
}
附言您还可以使XMLHttpRequest()发送数据
关于jquery - 在MVC中使用Knockout进行FileUpload,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38789113/