首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 實現 SWFUpload 圖片上傳接口示例

     編輯:PHP 綜合知識

背景

SWFUpload 是早期基於 Flash 的多文件上傳組件,雖已過時(現代用 HTML5 File API),但存量項目仍需維護。本文提供兼容性接口代碼。

服務端處理代碼

if (isset($_FILES['Filedata']) 
    && is_uploaded_file($_FILES['Filedata']['tmp_name']) 
    && $_FILES['Filedata']['error'] === UPLOAD_ERR_OK) {

    $upload = $_FILES['Filedata'];
    $ext = pathinfo($upload['name'], PATHINFO_EXTENSION);
    
    // 生成唯一文件名:image/ + md5(uniqid) + .ext
    $savePath = 'image/' . md5(uniqid($upload['name'])) . '.' . $ext;
    
    if (move_uploaded_file($upload['tmp_name'], $savePath)) {
        // 記錄文件信息供調試
        $logFile = 'test.txt';
        $logData = var_export(pathinfo($upload['name']), true);
        file_put_contents($logFile, $logData);
        
        // 返回成功標識給 Flash(SWFUpload 需輸出特定格式)
        echo '1'; 
    } else {
        echo '0'; // 失敗
    }
    exit;
}
echo '0'; // 非法請求

關鍵點說明

  • 字段名固定:SWFUpload 默認發送 Filedata,可通過 file_post_name 參數修改。
  • 輸出協議:Flash 需接收純文本響應(如 1/0 或 JSON),不可輸出 HTML。
  • 跨域問題:若上傳域名與頁面域名不同,需 crossdomain.xml 授權。
  • Session 傳遞:Flash 請求不自動攜帶 Cookie,需在 post_params 中傳遞 Session ID,服務端 session_id($_POST['PHPSESSID']) 恢復。

現代替代方案

推薦遷移至 HTML5 原生方案:

  • fetch/XMLHttpRequest + FormData
  • 成熟組件:Uppy、Dropzone.js、FilePond
  • 支持拖拽、預覽、分片、斷點續傳、圖片壓縮
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved