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'; // 非法請求
Filedata,可通過 file_post_name 參數修改。1/0 或 JSON),不可輸出 HTML。crossdomain.xml 授權。post_params 中傳遞 Session ID,服務端 session_id($_POST['PHPSESSID']) 恢復。推薦遷移至 HTML5 原生方案:
fetch/XMLHttpRequest + FormData