一直以来上传文件都使用的是别人的组件,今天看下无刷新上传内部具体的做法。上传文件可以使用form的形式来上传,也可以通过构造formData使用ajax来上传文件;
$(function () {
$("#btn_uploadimg").click(function () {
var fileObj = document.getElementById("FileUpload").files[0]; // js 获取文件对象
if (typeof (fileObj) == "undefined" || fileObj.size <= 0) {
alert("请选择图片");
return;
}
var formFile = new FormData();
formFile.append("action", "UploadVMKImagePath");
formFile.append("file", fileObj); //加入文件对象 file为传递给后台的参数,可以模仿form中input的name值。
//第一种 XMLHttpRequest 对象
//var xhr = new XMLHttpRequest();
//xhr.open("post", "/Admin/Ajax/VMKHandler.ashx", true);
//xhr.onload = function () {
// alert("上传完成!");
//};
//xhr.send(formFile);
//第二种 ajax 提交
var data = formFile;
$.ajax({
url: "/Admin/Ajax/VMKHandler.ashx",
data: data,
type: "Post",
dataType: "json",
cache: false,//上传文件无需缓存
processData: false,//用于对data参数进行序列化处理 这里必须false
contentType: false, //必须
success: function (result) {
alert("上传完成!");
},
})
})
})
上面写到的是通过获取dom结构的files来获取文件,如果需要实时上传的可以再input的onchange事件中获取到files文件
$(function () {
$(input).click(function(e) {
const files = e.target.files[0]
//这里可以获取到文件,接下来做法和上面一样
})
})