Javaは火狐ブラウザがuploadifyを使用してエラー302をアップロードし、IO errorエラーをアップロードする問題を解決します.

2405 ワード

最近同時に追加されたアップロードコントロールuploadifyを使用して、一括アップロードをサポートしているが、コントロールはFlashで作られており、IE、360ブラウザではまだ良いが、火狐ブラウザでアップロードエラーHttp error 302が発生し、jquery uploadifyがflashを助けてアップロードを実現しているため、バックグラウンドにデータストリーム要求を送信するたびに、ieはローカルクッキーストレージを自動的にバンドルしてサーバに送信します.しかしfirefox、chromeはそうしません.彼らは安全ではないと思っています.火狐ブラウザの下でuploadifyがflashを利用してpostアップロードを行う際に元のsession情報を含まず、新しいsessionを再作成し、新しいsessionはログイン検証に合格できないため、302をエラーとして報告します.
ネット上で言う解決策はuploader属性の後にsessionを追加することです
;jsessionid=
、コードは次のとおりです.

しかし、私はこのように試しても問題を解決することができなくて、依然として間違っています.当時はとても憂鬱だった.
それから、sessionの値をページに保存してJavaScriptで直接取得するという考え方をしました.そうすれば、成功しました.
具体的には、ナビゲーションバーの総ページでsessionの保存を行い、

そしてJavaScriptでその値を取得
/**
 *         
 * @param fileID        ID 
 * @param imgID        img ID 
 * @param nameValue uploadfile bean   ID ,      
 * @param divShowId      DIV             
 */
function uploadFileUtil(fileID,imgID,nameValue,divShowId){
	$("#"+fileID).uploadify({
		height        : 20,
		swf           :basePath+'/page/js/uploadify/uploadify.swf',
		uploader      :basePath+'/admin/product/upload.do;jsessionid=' + sessionId,
		buttonText:"    ",
		width         : 60,
		queueSizeLimit :1,
		'onUploadSuccess' : function(file, data, response) {
//			alert(data);
			var  mixed=data.split(",");
			var id=mixed[0];
			var  imgPath=mixed[1];
			$("#"+imgID).attr("src","/"+replaceImgURL(imgPath));
			/*    $(singlePicShow).append($("#singlePic")); */
			$("#"+nameValue).val(id);
			$("#" + divShowId).show();
			/* var img = $('#imgdiv1')
			img.attr('display:block') */
		}
	});
}

これで間違いなく、変更後にアップロードエラーIO errorが発生した場合は、火狐ブラウザをオフにしてキャッシュを空にしてから開けてみるといいでしょう.