②if (data) {
for (var i in data) {
$('<input type="hidden" value="' + data[i] + '" />').appendTo(form);
}
}
③var form = jQuery.createUploadForm(id, s.fileElementId,s.data);
ajaxFileUpload为了实现无刷新异步提交文件,构建 iframe 然后创建form表单 再将要上传的文件写上去再提交.但是原代码 却没有处理data.所以这块内容需要我们自己加上去.
下面红色部分为修改ajaxFileUpload.js的三处地方:
备注:好像csdn代码中加颜色加粗 有问题这三处修改的地方我直接贴出来,位置看下面的代码,
createUploadForm: function(id, fileElementId,data);
if (data) {
for (var i in data) {
$('<input type="hidden" value="' + data[i] + '" />').appendTo(form);
}
}
var form = jQuery.createUploadForm(id, s.fileElementId,s.data);
如何使用它呢?
$.ajaxFileUpload({ url: 'http://localhost:8080/HNUST/crawler/ordinary2', type: 'post', data : { url : url, keyword : keyword, rule : rule, data : data, sign:sign }, secureuri: false, //一般设置为false fileElementId: 'file', // 上传文件的id、name属性名 dataType: 'JSON', //返回值类型,一般设置为json、application/json 这里要用大写 不然会取不到返回的数据 success: function(data, status){ alert(data); }, error: function(data, status, e){ alert(e); } });
html:
<input type="file">
java:java后台 获取参数还是正常获取:
String url=request.getParameter("url"); String keyword=request.getParameter("keyword");
获取文件并分行读取(非图片):
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; MultipartFile multipartFile = multipartRequest.getFile("file"); //这个file要与fileElementId一致 try { InputStream inputStream=multipartFile.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String tempString = null; // 一次读入一行,直到读入null为文件结束 while ((tempString = reader.readLine()) != null) { fileList.add(tempString); } } catch (IOException e2) { // TODO Auto-generated catch block e2.printStackTrace(); }
使用过程中有两点需要注意的地方:
其一,dataType必须要大写;
其二,在data的值要写成json的格式,否则后台无法接受参数