为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 input type=file 上传 json 文件

如何使用 input type=file 上传 json 文件

PHP
RISEBY 2022-01-08 20:24:50
我想在一个名为 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';


查看完整回答
反对 回复 2022-01-08
?
心有法竹

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';


}


查看完整回答
反对 回复 2022-01-08
  • 2 回答
  • 0 关注
  • 461 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信