【问题标题】:How to not make inputType-file send data to another php file?如何不让输入类型文件将数据发送到另一个 php 文件?
【发布时间】:2022-01-04 01:42:17
【问题描述】:

我正在尝试构建一个只做三件事的页面:

  • 让用户选择一个文件(具体来说是一个.json文件)
  • 只需读取文件的内容并将它们存储在一个变量中。 (不要存放在任何地方)
  • 使用 Javascript 进一步处理内容变量。 (我将使用 JS 将文件转换为 XML。我已经准备好转换代码并且可以工作,它只需要从文件内容变量中获取的 json 字符串。转换为 XML 后,我'将导出 XML 文件以便用户下载它,并将其导入我的 MS Excel 表中,该表具有用于填充数据的 XML 映射。[我还没有想出导出选项])

到目前为止,我已经获得了一些 code-sn-ps 用于我的代码的某些部分:

在 JS 中访问 php 变量(包含内容):

<?php
$somevar = 'Hi Thunkable!';
?>

<script>
var msg = <?php echo $somevar; ?>;
.... process the variable further
</script>

Input-type: 上传按钮的文件表单 由于我在当前文件中有JS代码,如何使表单不向另一个php文件发送数据? em>

<form enctype="multipart/form-data" action="__URL__" method="POST">
    Send this file: <input name="userfile" type="file" />
    <input type="submit" value="Send File" />
</form>

对我来说唯一剩下的就是我上面所说的,而不是将上传的文件数据发送到另一个 PHP 文件,而是将其存储在一个变量中。我发现$txt = file_get_contents($_FILES['userfile']['tmp_name']); 可以从文件中获取内容。

总结一下,我只是想将我的所有代码保存在一个 HTML 文件中,其中包括上传文件、读取其内容并存储在 var. 中,以及进一步处理内容。这样的事情可能吗?我是 PHP/HTML/JS 的初学者,所以我想不出任何关于我的问题要事先搜索的内容...

【问题讨论】:

  • HTML 是一种静态资源语言。您需要 php(或其他服务器端脚本语言)来读取上传的文件。总的来说,你所问的有点令人困惑。学习一些关于 html 表单和文件上传如何工作的教程可能是个好主意
  • 如果您提供了更详细的用例说明以及您想对文件中的 json 执行什么操作,这也可能会有所帮助。如果您只想在该页面存在时在页面本身中使用它,那么这是一个完全不同的过程
  • 好的,但是我需要多个文件来处理一个文件的内容吗? HTML 在开始时选择文件,然后它会去 PHP 获取内容,然后到另一个 HTML 进行进一步的处理?我们可以做一些事情,让整个工作只有 1 个 HTML 文件吗?谢谢!
  • "to another HTML for further processes" 真的没有意义。向上移动一个级别并解释更高级别的用例实际上是什么
  • 嗨@charlietfl - 刚刚编辑了我的原始帖子并添加了我计​​划在javascript中使用JSON的详细信息。请检查和指导 - 谢谢!

标签: javascript php html input-type-file


【解决方案1】:

您可以使用对象 FileReader 从输入类型文件中读取文件

示例如下:

(function(){
    
    function onChange(event) {
        var reader = new FileReader();
        reader.onload = (event)=>{
          alert(event.target.result);
          let data = JSON.parse(event.target.result);
          //process the data here
          console.log(data);
        }
        reader.readAsText(event.target.files[0]);
    }
 
    document.getElementById('file').addEventListener('change', onChange);

}());
&lt;input id="file" type="file" accept="application/JSON" /&gt;

【讨论】:

  • 非常感谢赫里!这个解决方案非常适合我......你是救生员?
  • 最后一件事,如果我想获取上传文件的文件名怎么办?怎么可能做到这一点?谢谢! :)
  • 文件名在 event.target.files[0].name 来自 onChange 事件
猜你喜欢
  • 2017-03-09
  • 1970-01-01
  • 1970-01-01
  • 2021-12-31
  • 1970-01-01
  • 2016-03-25
  • 1970-01-01
  • 2010-10-15
  • 1970-01-01
相关资源
最近更新 更多