首页 > php图像处理 > PHP swfupload图片文件上传实例代码

PHP swfupload图片文件上传实例代码

swfupload是一个flash插件它可以结合php来快速实现图片文件无刷新上传,同时还可以批量上传图片,下面我来给大家介绍PHP swfupload图片文件上传实例代码有需要了解的中参考.

index.php文件,代码如下:

<!DOCTYPE html> 
<html> 
<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'];  
    //开源代码phprm.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,根据它来&ldquo;找回&rdquo;其应有的Session.


本文地址:http://www.phprm.com/tuxiang/fs4849.html

转载随意,但请附上文章地址:-)

标签:swfupload php图片文件上传

发表留言