SWFUpload problem

I am trying to use SWF Upload to upload images to my rails application

WHen I try to upload a file using a normal HTML upload form, it works just fine. In other words, the upload method in my controller reads the file and writes it to the disk.

However, when I use SWF Upload, I get no errors, the DHTML returned= 'files uploaded', but nothing is written to the server's disk. In fact, I can make several nonsensical modifications to the 'upload_script' variable, and no errors are raised, but still no file upload. I suspect this is a relative path issue.

How do you modify your path to upload_script so that you get an upload, or do you put your files in a different directory structure from that specified below:


I am using SWFUpload with the following structure:

app directory/public/javascripts/jscripts/SWFUpload/SWFUpload.js app directory/public/javascripts/jscripts/SWFUpload/SWFUpload.swf

example config javascript in side of my upload form https://www.example.com/app/controller/form_for_upload:   <script type="text/javascript">

    var swfu;     var swfu2;

    window.onload = function() {

      // Max settings

      swfu = new SWFUpload({         upload_script: "https://www.example.com/app/controller/ file_upload_method",         target : "SWFUploadTarget",         flash_path : "/javascripts/jscripts/SWFUpload/SWFUpload.swf",         allowed_filesize : 30720, // 30 MB         allowed_filetypes : "*.*",         allowed_filetypes_description : "All files...",         browse_link_innerhtml : "Browse",         upload_link_innerhtml : "Upload queue",         browse_link_class : "swfuploadbtn browsebtn",         upload_link_class : "swfuploadbtn uploadbtn",         flash_loaded_callback : 'swfu.flashLoaded',         upload_file_queued_callback : "fileQueued",         upload_file_start_callback : 'uploadFileStart',         upload_progress_callback : 'uploadProgress',         upload_file_complete_callback : 'uploadFileComplete',         upload_file_cancel_callback : 'uploadFileCancelled',         upload_queue_complete_callback : 'uploadQueueComplete',         upload_error_callback : 'uploadError',         upload_cancel_callback : 'uploadCancel',         auto_upload : false       });



THanks David

Everything seems quite in order in your config. I’m guessing you use <%= url_for … -%> to generate the url for the upload script?

Anyhow, I’m using SWFUpload a fair number of applications without a problem. SWFUpload on the client side, acts_as_attachment or attachment_fu on the serverside. The only thing I had to do, is map the file extension (.jpg, .png, …) to the content-type (image/jpeg, image/png, …), because flash streams everything as octet-stream.

Could you post your upload script? I’m guessing the problem is in your serverside script, if you’re not getting in error in the upload_error_callback.

Best regards

Peter De Berdt

Peter, THanks. I actually figured it out. The main problem was not with the script or the call to the script. After reviewing the web server logs (two hours into this foray!!), I found that Flash was calling the upload script properly, but the response from the server was the login page. Amazing how hard this was to find and thus debug!! I wen through the javascript method by method and my ruby line by line, but basically it appears that because my application requires authentication, and it sees the Flash calls as un-authenticated, it stops any upload. This took two seconds to fix when I realized the problem.

So I hope this may be of use to others when using authentication. ANd thanks to you Peter.

I do have some other points I would like to bring up.

1. I love how quick and seemingly magical the SWFUpload works on my sight, but for a while I kept getting "Error IO messages", and eventually figured out this was because I needed to get an up to date Flash plugin for my browser. THis could be a big problem if not addressed. Any way of other than telling all users that they must download the plugin before proceeding to upload, or changing the Error IO message to "Upload a Flash plugin first"? In other words, is there some way to just detect whether or not a user has Flash?

2. Wouldn't an IFRAME alternative be more fool-proof?

Peter thanks again-after googling this topic, your name came up several times. Unfortunately, my initial problem was actually related to my server configuration.


Ignore the Flash Detect point-that is easily solved with javascript. I still wonder if an IFRAME approach would require the least configuration on the end user's part. Curious to hear opinions. David