swfupload是一个flash插件它可以结合php来快速实现图片文件无刷新上传,同时还可以批量上传图片,下面我来给大家介绍PHP swfupload图片文件上传实例代码有需要了解的中参考.
index.php文件,代码如下:
<!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 - SWFObject Demo</title> <link href= "css/default.css" rel= "stylesheet" type= "text/css" /> <script type= "text/javascript" src= "swfupload/swfupload.js" ></script> <script type= "text/javascript" src= "js/swfupload.swfobject.js" ></script> <script type= "text/javascript" src= "js/swfupload.queue.js" ></script> <script type= "text/javascript" src= "js/fileprogress.js" ></script> <script type= "text/javascript" src= "js/handlers.js" ></script> <script type= "text/javascript" > var swfu; SWFUpload.onload = function () { var settings = { flash_url : "swfupload/swfupload.swf" , upload_url: "upload.php" , post_params: { "PHPSESSID" : "NONE" , "HELLO-WORLD" : "Here I Am" , ".what" : "OKAY" }, file_size_limit : "100 MB" , file_types : "*.jpg;*.gif;*.png;*.jpeg;" , file_types_description : "All Files" , file_upload_limit : 100, file_queue_limit : 0, custom_settings : { progressTarget : "fsUploadProgress" , cancelButtonId : "btnCancel" }, debug: false, // Button Settings button_image_url : "XPButtonUploadText_61x22.png" , button_placeholder_id : "spanButtonPlaceholder" , button_width: 61, button_height: 22, // The event handler functions are defined in handlers.js swfupload_loaded_handler : swfUploadLoaded, file_queued_handler : fileQueued, 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, // Queue plugin event // SWFObject settings minimum_flash_version : "9.0.28" , swfupload_pre_load_handler : swfUploadPreLoad, swfupload_load_failed_handler : swfUploadLoadFailed }; swfu = new SWFUpload(settings); } </script> </head> <body> <div id= "header" > <h1 id= "logo" ><a href= "" >SWFUpload</a></h1> <div id= "version" >v2.2.0</div> </div> <div id= "content" > <h2>SWFObject Demo</h2> <form id= "form1" action= "index.php" method= "post" enctype= "multipart/form-data" > <p> This page demonstrates the SWFObject plugin. Do each of the following (one at a time) to see the plugin work: </p> <ul> <li>Uninstall your Flash Player or install a version less than 9.0.28</li> <li>Cause the SWF file to fail to load by deleting or renaming swfupload.swf (simulating a very slow or failed download)</li> <li>Disable JavaScript</li> </ul> <p> Each of these tests demontrate how these issues can be handled by SWFUpload and the SWFObject libraries. </p> <div id= "divSWFUploadUI" > <div class = "fieldset flash" id= "fsUploadProgress" > <span class = "legend" >Upload Queue</span> </div> <p id= "divStatus" >0 Files Uploaded</p> <p> <span id= "spanButtonPlaceholder" ></span> <input id= "btnCancel" type= "button" value= "Cancel All Uploads" disabled= "disabled" style= "margin-left: 2px; height: 22px; font-size: 8pt;" /> <br /> </p> </div> <noscript> <div style= "background-color: #FFFF66; border-top: solid 4px #FF9966; border-bottom: solid 4px #FF9966; margin: 10px 25px; padding: 10px 15px;" > We're sorry. SWFUpload could not load. You must have JavaScript enabled to enjoy SWFUpload. </div> </noscript> <div id= "divLoadingContent" class = "content" style= "background-color: #FFFF66; border-top: solid 4px #FF9966; border-bottom: solid 4px #FF9966; margin: 10px 25px; padding: 10px 15px; display: none;" > SWFUpload is loading. Please wait a moment... </div> <div id= "divLongLoading" class = "content" style= "background-color: #FFFF66; border-top: solid 4px #FF9966; border-bottom: solid 4px #FF9966; margin: 10px 25px; padding: 10px 15px; display: none;" > SWFUpload is taking a long time to load or the load has failed. Please make sure that the Flash Plugin is enabled and that a working version of the Adobe Flash Player is installed. </div> <div id= "divAlternateContent" class = "content" style= "background-color: #FFFF66; border-top: solid 4px #FF9966; border-bottom: solid 4px #FF9966; margin: 10px 25px; padding: 10px 15px; display: none;" > </div> </form> </div> </body> </html>
核心处理程序php代码,代码如下:
if (isset( $_FILES [ "Filedata" ]) || ! is_uploaded_file ( $_FILES [ "Filedata" ][ "tmp_name" ]) || $_FILES [ "Filedata" ][ "error" ] != 0) { $upload_file = $_FILES [ 'Filedata' ]; $file_info = pathinfo ( $upload_file [ 'name' ]); $file_type = $file_info [ 'extension' ]; $save = 'image/' . md5(uniqid( $_FILES [ "Filedata" ][ 'name' ])) . '.' . $file_info [ 'extension' ]; $name = $_FILES [ 'Filedata' ][ 'tmp_name' ]; //开源代码phpfensi.com if (!move_uploaded_file( $name , $save )) { exit ; } //将数组的输出存起来以供查看 $fileName = 'test.txt' ; $postData = var_export( $file_info , true); $file = fopen ( '' . $fileName , "w" ); fwrite( $file , $postData ); fclose( $file ); }
swfUpload注意事项
swfuplaod在上传时,会新开一个进程,和原来的进程不一致,要解决这个问题,需要指定session_id,然后在登录页面判断,如果有post过来的session_id,那么就用函数session_id($_POST['PHP_SESSIONID'])指定一下.
上传页的JS里面,可以获取当前的SESSION_ID的,例如上传页的JS中,代码如下:
post_params: {"PHPSESSID": "<?php echo session_id(); ?>"},
在验证的判断页,代码如下:
if (isset($_POST["PHPSESSID"])) { session_id($_POST["PHPSESSID"]);}
这一段是网上的注释,在带有Session验证的网站后台中SWFUpload无法正常工作,这是因为SWFUpload在上传时相当于重新开辟了一个新的Session 进程,因此无法与原有程序的Session保持一致,这就需要在上传时传递原有程序的SessionID,根据它来[找回]其应有的Session.
查看更多关于PHP swfupload图片文件上传实例代码的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did29445