I'm trying to upload files using swfuploder and it works fine in IE.But its getting "UploadError 403" in Firefox. I'm using apache-tomcat-6.0.16 and couldnt access the .htaccess
file as well.
This is my code to use for swfupload.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>SWFUpload Demos - Simple Demo</title>
<link href="../css/default.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="../js/swfupload/demos/swfupload/swfupload.js"></script>
<script type="text/javascript" src="../js/swfupload/demos/simpledemo/js/swfupload.queue.js"></script>
<script type="text/javascript" src="../js/swfupload/demos/simpledemo/js/fileprogress.js"></script>
<script type="text/javascript" src="../js/swfupload/demos/simpledemo/js/handlers.js"></script>
<script type="text/javascript">
var swfu;
window.onload = function() {
var settings = {
flash_url : "../js/swfupload/demos/swfupload/swfupload.swf",
upload_url: "upload_pages/uploader.jsp",
post_params: {"PHPSESSID" : ""},
file_size_limit : "100 MB",
file_types : "*.*",
file_types_description : "All Files",
file_upload_limit : 100,
file_queue_limit : 0,
custom_settings : {
progressTarget : "fsUploadProgress",
cancelButtonId : "btnCancel"
},
debug: true,
prevent_swf_caching: true,
// Button settings
button_image_url: "../js/swfupload/demos/simpledemo/images/TestImageNoText_65x29.png",
button_width: "65",
button_height: "29",
button_placeholder_id: "spanButtonPlaceHolder",
button_text: '<span class="theFont">Upload</span>',
button_text_style: ".theFont { font-size: 16; }",
button_text_left_padding: 12,
button_text_top_padding: 3,
// The event handler functions are defined in handlers.js
file_queued_handler : fileQueued,
开发者_Go百科 file_queue_error_handler : fileQueueError,
file_dialog_complete_handler : fileDialogComplete,
upload_start_handler : uploadStart,
upload_progress_handler : uploadProgress,
upload_error_handler : uploadError,
upload_success_handler : uploadSuccess,
upload_complete_handler : uploadComplete,
queue_complete_handler : queueComplete
};
swfu = new SWFUpload(settings);
};
</script>
</head>
<body>
<div id="content">
<h2>File Upload</h2>
<form id="form1" method="post" enctype="multipart/form-data">
<div class="fieldset flash" id="fsUploadProgress">
<span class="legend">Upload Queue</span>
</div>
<div id="divStatus">0 Files Uploaded</div>
<div>
<span id="spanButtonPlaceHolder"></span>
<input id="btnCancel" type="button" value="Cancel All Uploads" onclick="swfu.cancelQueue();" disabled="disabled" style="margin-left: 2px; font-size: 8pt; height: 29px;" />
</div>
</form>
</div>
</body>
</html>
I have tried with both absolute and relative url for "upload_url" but the same error "uploadError 403" appears.But it works for IE.
HTTP status code 403 means Forbidden. This is an authentication error. The request requires an authenticated user (logged-in user), but either the user isn't there in the session, or the associated session cannot be found.
I have never used SWFUpload, but it look like that it didn't pass the jsessionid
cookie along with the request to the server side, so that the server side cannot identify the client. Googling "swfupload jsessionid" also learns that you're not the only one who encountered this particular problem. To fix this, you need to append the jsessionid
to the URL in the settings:
upload_url: "upload_pages/uploader.jsp;jsessionid=${pageContext.session.id}",
That said, the following line
post_params: {"PHPSESSID" : ""},
looks suspicious as well. What is an empty PHP session ID doing there in a JSP/Servlet environment? Aren't you overlooking/forgotting this while copypasting someone else's code?
Im having a similar problem but in apache/PHP. So im linking a possible solution here.
From what i've found so far it seems to be a security issue with the session authentication on the server in which you have security extensions installed (ie session protection/encryption) which makes the server think that html page and swf uploader are different users thus causing the 403 error. http://imagevuex.com/forum/viewtopic.php?f=27&t=4337
Also check that mod_security is disabled and try adding these .htaccess settings, it seems to work for some.
<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>
Another solution seems to be (also .htaccess), from http://www.ramirezcobos.com/2010/01/05/swfupload_0_0-error-http-status-403-solved/
SetEnvIfNoCase Content-Type “^multipart/form-data;” “MODSEC_NOPOSTBUFFERING=Do not buffer file uploads”
Finally firefox might be a cookie bug found here http://topecoders.blogspot.com/2010/06/solution-for-flash-cookie-bug.html
精彩评论