我想在一個名為 process.php 的 php 腳本上發送一個 JSON 文件,將該文件保存在一個文件夾中,然后將該文件發送到一個 python 腳本。目前的html代碼是這樣的:<form method="post" enctype="multipart/form-data"> <input type="file" name="files[]" multiple> <input type="submit" value="Upload File" name="submit"></form>javascript代碼是這樣的: const url = 'process.php'; const form = document.querySelector('form'); form.addEventListener('submit', e => { e.preventDefault(); const files = document.querySelector('[type=file]').files; const formData = new FormData(); for (let i = 0; i < files.length; i++) { let file = files[i]; formData.append('files[]', file); } fetch(url, { method: 'POST', body: formData }).then(response => { console.log(response); }); });最后我的PHP是這樣的:if ($_SERVER['REQUEST_METHOD'] === 'POST') {if (isset($_FILES['files'])) { $errors = []; $path = 'uploads/'; $extensions = ['json']; $all_files = count($_FILES['files']['tmp_name']); for ($i = 0; $i < $all_files; $i++) { $file_name = $_FILES['files']['name'][$i]; $file_tmp = $_FILES['files']['tmp_name'][$i]; $file_type = $_FILES['files']['type'][$i]; $file_size = $_FILES['files']['size'][$i]; $file_ext = strtolower(end(explode('.', $_FILES['files']['name'][$i]))); $file = $path . $file_name; if (!in_array($file_ext, $extensions)) { $errors[] = 'Extension not allowed: ' . $file_name . ' ' . $file_type; } if ($file_size > 2097152) { $errors[] = 'File size exceeds limit: ' . $file_name . ' ' . $file_type; } if (empty($errors)) { move_uploaded_file($file_tmp, $file); } } if ($errors) print_r($errors);}}在 PHP 中,如果我嘗試打印 $file_name,文件名會正確打印,但如果我嘗試打印其他信息,則結果是空字符串,或者在 $file_size 為 0 的情況下。那么,出了什么問題? 我是否必須在 apache 配置中設置一些內容才能在我的 Web 服務器上上傳文件,或者我在代碼中犯了一些錯誤?
2 回答

婷婷同學_
TA貢獻1844條經驗 獲得超8個贊
您需要使用文件的臨時名稱,函數 is_uploaded_file() 不接受客戶端機器上發送的文件名,試試這個:
if (is_uploaded_file ($_FILES['upload_cont_file']['tmp_name'] ))
echo 'file uploaded ';
else
echo 'error';

心有法竹
TA貢獻1866條經驗 獲得超5個贊
如果要上傳并移動到特定目錄,例如圖像文件夾
if (move_uploaded_file ( $_FILE['upload_cont_file']['tmp_name'] ,'images/'.$_FILE['upload_cont_file']['name']))
{
echo 'file uploaded ';
}
else
{
echo 'couldnt file uploaded';
}
如果您只是檢查上傳到臨時文件夾的文件
if (is_uploaded_file ($_FILES['upload_cont_file']['tmp_name'] ))
{
echo 'file uploaded ';
}
else
{
echo 'file couldn't upload';
}
- 2 回答
- 0 關注
- 479 瀏覽
添加回答
舉報
0/150
提交
取消