uploadify插件302、406错误

使用uploadify插件做多附件上传的功能,使用谷歌浏览器时一切正常,而用户测试时使用IE或360浏览器时出现一些问题。

一、使用360极速模式下上传附件时报错(Http - error 302)

首先,302错误表示被请求的资源暂时转移(Moved temporatily),然后会给出一个转移后的URL,而浏览器在处理服务器返回的302错误时,原则上会重新建立一个TCP连接,然后再取重定向后的URL的页面;但是如果页面存在于缓存中,则不重新获取。
原因是uploadify发送请求时,360浏览器极速模式下不发送session(网上查询得出),拦截器获取的session一直为null,导致拦截判断当前未登录而没有进行上传操作(用户未登录无法获取当前操作人员);

所以可以在URL中将sessionId传到服务器。
1、jsp中获取sessionId

<!-- 取得sessionId -->
<%
    String syscontext = request.getContextPath(); 
%> 
<% 
  String path = request.getContextPath(); 
  String basePath = request.getScheme() + "://"
      + request.getServerName() + ":" + request.getServerPort() 
      + path; 

  String sessionid = session.getId();

%>

2、js代码

jQuery(function() {
        getData();//用于加载已上传文件列表的方法,本文中未贴出代码,可忽略
        $("#file_upload").uploadify({  
            height : 20,
            swf : contextPath + 
            '/scripts/uploadify/uploadify.swf',
            uploader : '',
            width : 100,
            auto : false,
            multi : true,
            'buttonText' : '选择文件',
            'multi' : true,    
            'fileObjName' : 'file',
            'onUploadSuccess' : function(file, data, response) {
                successFile++;
                $('#successFile').html(successFile);
            },
            'onQueueComplete' : function(queueData) {
                reloadGrid();
                parent.jQuery('#mydatagrid').datagrid('reload');
            }
       });
    });
    var url = contextPath + '/test.do;jsessionid=<%=sessionid%>?method=save';
    function saveUpload(){
         $('#file_upload').uploadify('settings','uploader',url);
         $("#file_upload").uploadify('upload','*'); 
    }

注意:sessionId用”;“分开。


二、使用IE及360报错(Http - error 406)
检查发现IE上传时的请求头中,Accept: text/*
而Chrome的请求头中,Accept: */*

项目中使用springMVC,保存附件的方法中使用了@ResponseBody注解。

第一种方法可以使用返回一个String到页面,第二种方法则不使用@ResponseBody,使用response返回json页面。保存方法接受前台传递的参数,在保存方法中添加下面两行代码。保存方法使用Map< String,String>接收前台传递的参数。

response.setContentType("application/json; charset=UTF-8");
response.getWriter().write(map.String());
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值