rails 中要使用多文件上传的方案很多,最近搜到一个非常好的flash解决多文件上传的办法,而且用起来也非常简单,当然官网上有关于MultiPowUpload 的说明,但是它写的不够直接,而且没有对rails 支持。所以在此把使用步骤告诉大家:
1. 下载文档: http://www.element-it.com/multiple-file-upload/flash-uploader.aspx
?
下载之后文件目录如下:
?
/Documentation /Extra /FileProcessingScripts /images ElementITMultiPowUpload3.0.swf styles.css .....
?
复制以上几个文件夹到项目的public 文件中,其中images中的内容直接复制到images中即可,而 styles.css文件要放到stylesheets中。
?
2. 新建一个页面,在页面中写入以下代码:
<OBJECT id="MultiPowUpload" codeBase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="700" height="200" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" VIEWASTEXT> <PARAM NAME="FlashVars" VALUE="uploadUrl=<%= send_url %>&browseButton.text=Browse...&browseButton.tooltip=Add files for upload2"> <PARAM NAME="BGColor" VALUE="#FFFFFF"> <PARAM NAME="Movie" VALUE="ElementITMultiPowUpload3.0.swf"> <PARAM NAME="AllowScriptAccess" VALUE="always"> <PARAM NAME="SWLIVECONNECT" VALUE="true"> <embed bgcolor="#FFFFFF" id="MultiPowUpload" name="MultiPowUpload" src="/ElementITMultiPowUpload3.0.swf" quality="high" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" allowscriptaccess="always" width="700" height="200" flashvars="uploadUrl=<%= send_url %>&redirectUploadUrl=<%= redirect_url %>&browseButton.text=Browse...&browseButton.tooltip=Add files for upload2"> </embed> </OBJECT>
?其中send_url 就是你要发送到那个url中,redirect_url就是发送完成后跳转到那个页面。由于该flash是多文件上传同时还要显示进度条,外表上看是请求一次,实际上,一个文件请求一次,多个文件就请求多次,所以在你的controller的action 中不能跳转。
?
3. controller 接收到的数据如下:
{"fileCreationdate"=>"1281592578656", "Filename"=>"YSDH_3012.jpg", "fileId"=>"BF455077-6388-6269-D6DD-EE50FD54FB13", "rotateAngle"=>"0", "filesCount"=>"1", "action"=>"flash_uploads", "Upload"=>"Submit Query", "id"=>"3", "MultiPowUpload_browserCookie"=> "c_lang=zh; lp_auth=7318Y4a0wvuy%2BTX4cPnScX99crC95G1yeY%2BDWvauKVr6iLSpD%2FWQPqRarJtuaqzD "fileModificationDate"=>"1281592580390", "controller"=>"ajax_uploads", "rotateAngleBeforeCrop"=>"0", "currentFileIndex"=>"0", "fileSize"=>"208207", "Filedata"=> #<File:C:/DOCUME~1/kenny/LOCALS~1/Temp/RackMultipart20100915-3232-1gwsjdq-0>} rd: 31.3ms)
?到此action中怎么写大家应该知道了,保存文件就可以了
具体效果图如下:
?
?
1 楼
yinchao1000
2011-06-03
但是我想问,这个东西现在收费的哟,还挺贵的,有没有破解的可以学习下!