Ajax 文件上传
使用ajax提交form表单,包括ajax文件上传
通过jQuery来使用FormData对象
var formData = new FormData();
formData.append("uploadFile", $("#uploadFile")[0].files[0]);
$.ajax({
cache : false,
url : "...",
type : 'POST',
data : formData,
processData : false, // 告诉jQuery不要去处理发送的数据
contentType : false, // 告诉jQuery不要去设置Content-Type请求头(不设置内容类型)
success : function(msg) {
var result = JSON.parse(msg).result;
var resultText = JSON.parse(msg).resultText;
},
error : function(msg) {
showMessage("操作失败!" + JSON.stringify(msg));
}
});
jsp代码
<div id="uploadDialog" style="display:none">
<p> <s:file id="uploadFile" name ="uploadFile" style="width: 160px"></s:file> </p>
</div>
备注:
ajax中设置属性
processData: false, // 不处理数据
contentType: false // 不设置内容类型
处理返回数据时需要用JSON.parse(msg)解析
action返回时
Map<String, String> returnMap = new HashMap<>();
returnMap.put("result", returnResult);
eturnMap.put("resultText", responseText);
try {
//response.setContentType("text/xml;charset=UTF-8"); (这行加上会直接返回error)
response.setHeader("Cache-Control", "no-cache");
response.getWriter().print(JsonUtil.toJson(returnMap));
response.getWriter().close();
} catch (IOException e) {
e.printStackTrace();
}
还可以通过下面初始化formData
var formElement = document.querySelector("form");
var formData = new FormData(formElement);
formData 可以通过append添加属性
var formData = new FormData();
formData.append("username", "Groucho");
formData.append("accountnum", 123456); // 数字 123456 会被立即转换成字符串 "123456"
// HTML 文件类型input,由用户选择
formData.append("userfile", fileInputElement.files[0]);
// JavaScript file-like 对象
var content = '<a id="a"><b id="b">hey!</b></a>'; // 新文件的正文...
var blob = new Blob([content], { type: "text/xml"});
formData.append("webmasterfile", blob);
相关推荐
结束数据方法的参数,该如何定义?-- 集合为自定义实体类中的结合属性,有几个实体类,改变下标就行了。<input id="add" type="button" value="新增visitor&quo