我的页面中有一个FileUpload。我可以通过这个FileUpload将所选文件发布到JQuery的主机路径吗?我在互联网上找到了这段代码:
HTML
<input id="file" type="file" name="file"/>
<div id="response"></div>
JS
jQuery('document').ready(function(){
var input = document.getElementById("file");
var formdata = false;
if (window.FormData) {
formdata = new FormData();
}
input.addEventListener("change", function (evt) {
var i = 0, len = this.files.length, img, reader, file;
for ( ; i < len; i++ ) {
file = this.files[i];
if (!!file.type.match(/image.*/)) {
if ( window.FileReader ) {
reader = new FileReader();
reader.onloadend = function (e) {
//showUploadedItem(e.target.result, file.fileName);
};
reader.readAsDataURL(file);
}
if (formdata) {
formdata.append("image", file);
formdata.append("extra",'extra-data');
}
if (formdata) {
jQuery('div#response').html('<br /><img src="ajax-loader.gif"/>');
jQuery.ajax({
url: "upload.aspx/Upload",
type: "POST",
data: formdata,
processData: false,
contentType: false,
success: function (res) {
jQuery('div#response').html("Successfully uploaded");
}
});
}
}
else
{
alert('Not a vaild image!');
}
}
}, false);
});
作者写道:“在代码级别,这将作为普通文件上传工作”但我无法理解如何。有谁知道它?
答案 0 :(得分:0)
要将其发送到WebMethod,您仍然需要以JSON格式发送Base64字符串,并且您需要将contentType正确设置为application/json
。我相信ASP.NET会忽略你对upload.aspx / Upload的请求。
或者,将该文件POST到您自己的HttpHandler中可能会更直接,因此您可以访问更接近金属的POST数据。