我想在一个名为 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 关注
- 461 浏览
添加回答
举报
0/150
提交
取消