开发者社区 问答 正文

springMVC+ajaxfileupload 直接走error?报错

之前用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的版本版本不兼容哇,之前听说有版本匹配的问题了

展开
收起
爱吃鱼的程序员 2020-06-10 10:10:39 648 分享 版权
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    inputid="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")
      publicvoidimportBase(HttpServletRequestrequest,HttpServletResponseresponse){
    }
    方法中去掉HelperClazz.renderJson()方法,替换为:
     PrintWriterwriter=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(IOExceptione){
          e.printStackTrace();
        }finally{
          if(writer!=null)
            writer.close();
        }
     目的是ajaxfileupload.js只能封装成text/html形式的响应。


    3、在jsp中$.ajaxFileUpload({  返回值 去掉 varstr=$(result).text();
              修改          varobj=jQuery.parseJSON(result);
         

    我前端是html,不用jsp,因为这个所以不直接用form表单上传。前后端只用json交互。。

    如果只是图片的话,用Multipart上传可能还不如直接BASE64

    可以绕过很多问题

    但是不是图片,是文件,pdf,doc等
    2020-06-10 13:25:53
    赞同 展开评论