之前用form表单上传,现在换了无刷新。就不灵了
浏览器直接走error,不走success,火狐不报错,,,uc报400. eclipse后台也不报错。。就晕了。
@RequestMapping("/imageUpload1.do") @ResponseBody public Result Upload(@RequestParam("fileToUpload") MultipartFile file ,HttpServletRequest request,HttpServletResponse response){ if(file==null){ System.out.println("file is null"); } Result result=new Result(); result.setMsg("good"); return result; }
再就是前端
<body> <!-- 点击图片,打开文件选择器,确定,上传。(这是网络上的一个图片) --> <img id="upload" alt="" src="upload.png"> <!-- 隐藏file标签 --> <input id="fileToUpload" style="display: none" type="file" name="upfile"><br/> <span id="ok"></span> </body>
<script type="text/javascript"> $(function(){ //点击打开文件选择器 $("#upload").on('click', function() { $('#fileToUpload').click(); }); //选择文件之后执行上传 $('#fileToUpload').on('change', function() { $.ajaxFileUpload({ url:'http://localhost:8080/upload/imageUpload1.do', secureuri:false, fileElementId:'fileToUpload',//file标签的id dataType: 'text',//返回数据的类型 success: function (data,status) { $("#ok").html(result.msg); }, error: function (data,status,e) { alert("链接错误"); } }); }); }) </script>
这是uc报的,每次点击之后报这错,之后再点不报,刷新再报。
但是直接用get测试链接。
报错:
<!-- 定义文件上传处理器 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding" value="UTF-8" /> <!-- 指定所上传文件的总大小不能超过800KB......注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 --> <!-- <property name="maxUploadSize" value="800000"/> --> </bean> <mvc:annotation-driven/> <!-- 注解扫描路径 --> <context:component-scan base-package="day1email"/> </beans>
<servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
我感觉不会是jq和jajaxfile的版本版本不兼容哇,之前听说有版本匹配的问题了
input id="fileToUpload" style="display: none" type="file" name="upfile"
我对前端不太熟,如果没记错的话,提交的参数名用的应该用的是name吧,你这个name和spring取的参数名不一样 ######问题找到了,是这个ajaxfileupload本身就是个残次品,网上人都说,换了其他人的修改版本,立马ok。。谢谢了######谢谢,刚看到,改了,后台能收到了,不过前端还是有问题,在改。######这种情况你应该把Log发上来的######http://pan.baidu.com/s/1pJTeCNx 帮忙看一下,因为不能再添加了,格式不对,看起来也麻烦,我放到百度云了。两张图片,一张请求信息,一张错误信息######没有日志,后台啥反应也没有######不设置mime能上传?######
上传图片、上传文件凡用到ajaxFileUpload 提交的存在ie9\ie10下的bug,不知道你这个适不适用。解决办法如下:
1、更新static\oa\js\ajaxfileupload.js
2、在调用上传的Cotroller中如: @RequestMapping(value = "/importBase")
public void importBase(HttpServletRequest request, HttpServletResponse response){
}
方法中去掉HelperClazz.renderJson()方法,替换为:
PrintWriter writer = null;
try {
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
response.setContentType("text/html;chartset=UTF-8");
writer = response.getWriter();
writer.write("{ "fileName": "" + fileName + "" }");
writer.flush();
} catch (IOException e) {
e.printStackTrace();
}finally {
if (writer != null)
writer.close();
}
目的是ajaxfileupload.js只能封装成text/html形式的响应。
3、在jsp中$.ajaxFileUpload({ 返回值 去掉 var str = $(result).text();
修改 var obj = jQuery.parseJSON(result);
######我前端是html,不用jsp,因为这个所以不直接用form表单上传。前后端只用json交互。。###### 如果只是图片的话,用Multipart上传可能还不如直接BASE64
可以绕过很多问题 ######但是不是图片,是文件,pdf,doc等
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。