首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从表单访问这两个文件

无法从表单访问这两个文件
EN

Stack Overflow用户
提问于 2020-02-04 15:09:33
回答 2查看 26关注 0票数 0
代码语言:javascript
复制
    <form   name=”myForm” enctype=”multipart/form-data” >
    <div class="row pt-2 pl-3">

       <div class="col-md-5 pl-0 position-relative ">
            <!-- <input type="file" accept=".xlsx, .xls" class="input-file"> -->

            <div class="wrappeer">
              <div class="file-upload">
                <small> Drag & drop or browse  file to upload!</small> &nbsp;
                <input type="file" name="input-file" accept=".xlsx, .xls" id="input-file" />
                <i class="fa fa-arrow-up"></i>
              </div>
            </div> 

        </div>
    </div>

    <div class="row pt-2 pl-3">
      <div class="col-md-10 position-relative p-0">
        <!-- <input type="file" accept=".xlsx, .xls" class="input-file-2"> -->

        <div class="wrappeer-2">
          <div class="file-upload-2">
            <small> Drag & drop or browse  file to upload!</small> &nbsp;
            <input type="file" name="input-file" accept=".xlsx, .xls" id="input-file-2" />
            <i class="fa fa-arrow-up"></i>
          </div>
        </div> 

      </div>

  </div>

  <div class="pt-5 text-left pb-4">
    <button type="submit" class="button--light btn-next">SUBMIT</button> 
  </div>
  </form>

这是我的upload.js,我试图打印文件的长度,它的长度是1,所以访问第二个文件似乎不起作用。

代码语言:javascript
复制
const form = document.querySelector('form')
form.addEventListener('submit', e => {
 const formData = new FormData()
  console.log(document.querySelector('[type=file]').files);

  debugger
  const file = document.querySelector('[type=file]').files[0];
  console.log(document.querySelector('[type=file]').files[1]);



)

我们需要读取这两个文件,并将它们作为formData发送。

EN

回答 2

Stack Overflow用户

发布于 2020-02-04 15:14:31

问题是你的选择器:

代码语言:javascript
复制
document.querySelector // just returns one node

而在您的情况下,您需要

代码语言:javascript
复制
document.querySelectorAll(node)// It will get you a collection of nodes

MDN docs

文档方法querySelector()返回文档中与指定选择器或选择器组匹配的第一个元素。如果未找到匹配项,则返回null。

如果需要与指定选择器匹配的所有元素的列表,则应改用querySelectorAll()

代码语言:javascript
复制
const form = document.querySelector('form')
form.addEventListener('submit', e => {
  e.preventDefault();
  const formData = new FormData();
  const fileInputs = document.querySelectorAll('[type=file]');
  console.log(fileInputs.length);
  fileInputs.forEach(input => console.log(input.files))

})
代码语言:javascript
复制
<form name=”myForm” enctype=”multipart/form-data”>
  <div class="row pt-2 pl-3">

    <div class="col-md-5 pl-0 position-relative ">
      <!-- <input type="file" accept=".xlsx, .xls" class="input-file"> -->

      <div class="wrappeer">
        <div class="file-upload">
          <small> Drag & drop or browse  file to upload!</small> &nbsp;
          <input type="file" name="input-file" accept=".xlsx, .xls" id="input-file" />
          <i class="fa fa-arrow-up"></i>
        </div>
      </div>

    </div>
  </div>

  <div class="row pt-2 pl-3">
    <div class="col-md-10 position-relative p-0">
      <!-- <input type="file" accept=".xlsx, .xls" class="input-file-2"> -->

      <div class="wrappeer-2">
        <div class="file-upload-2">
          <small> Drag & drop or browse  file to upload!</small> &nbsp;
          <input type="file" name="input-file" accept=".xlsx, .xls" id="input-file-2" />
          <i class="fa fa-arrow-up"></i>
        </div>
      </div>

    </div>

  </div>

  <div class="pt-5 text-left pb-4">
    <button type="submit" class="button--light btn-next">SUBMIT</button>
  </div>
</form>

票数 1
EN

Stack Overflow用户

发布于 2020-02-04 15:25:02

如果我没有弄错你的问题,那么你应该在你的文件输入上附加更改事件,并使用它来获取文件值,document.querySelector将只返回DOM对象,并在所有文件输入上附加事件。

看看我的例子。

代码语言:javascript
复制
const file =document.querySelector('[type=file]');
// file varaibale is DOM tag and have not .file attribute.
console.log(file);

// to read the information of the file you need to triger file reader on upload event for example.
function handleFileSelect(evt) {
    var files = evt.target.files; // FileList object

    // use the 1st file from the list
    f = files[0];

    var reader = new FileReader();

    // Closure to capture the file information.
    reader.onload = (function(theFile) {
        return function(e) {
           console.log(theFile)
          //console.log( e.target.result );
        };
      })(f);

      // Read in the image file as a data URL.
      reader.readAsText(f);
  }

  document.getElementById('upload').addEventListener('change', handleFileSelect, false);
代码语言:javascript
复制
test <input type="file" name="upload" id="upload">
<div id="html"></div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60052263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档