鍍金池/ 問答/HTML5  HTML/ 文件應(yīng)該如何上傳

文件應(yīng)該如何上傳

想用koa2寫接收客戶端上傳文件并存儲(chǔ)的功能但是用ctx.body沒有接收到post給服務(wù)器的文件
有幾個(gè)地方不是很清楚 有知道其中任意問題的希望能來解惑,不勝感激,能解決任意問題必贊同,謝謝
1、 <input type="file" multiple onchange="fileinfo(this.files)" name="up"> 應(yīng)該是可以選擇多個(gè)文件,但是我還是只能選擇一個(gè),是不是我的寫法問題?
2、在只有一個(gè)文件的情況下,這個(gè)文件是不是onchange事件的參數(shù)列表的第一個(gè),也就是如下代碼中的files[0]?但是我輸出的只有文件信息,這個(gè)文件是blob格式的嗎?

 function fileinfo (files) {
      console.log(files[0])
  }

3、文件上傳服務(wù)器是否可以直接用XMLHttpRequest,還是應(yīng)該responseType = blob,或者其他什么方式向服務(wù)器發(fā)送文件

var xhr = new XMLHttpRequest();
    xhr.open('POST', 'http://localhost:3000');
    xhr.setRequestHeader('')
    xhr.send(a[0]) //這里的a就是onchange的參數(shù)

4、不知道是不是我之前流程寫的不對(duì),總之ctx.body沒有拿到數(shù)據(jù).我的input是在form內(nèi)的,但并非通過form上傳,是不是還需要什么中間件進(jìn)行數(shù)據(jù)接收,才可以拿到客戶端post的數(shù)據(jù)?

回答
編輯回答
失魂人

ko2 不了解,

1、 <input type="file" multiple onchange="fileinfo(this.files)" name="up"> 應(yīng)該是可以選擇多個(gè)文件,但是我還是只能選擇一個(gè),是不是我的寫法問題?

寫法應(yīng)該沒問題,你可以一次選擇多個(gè),但是多次選擇,應(yīng)該只會(huì)保留最后一個(gè)(猜測);

2、選中文件通過 HTMLInputElement.files 屬性返回 — 返回值是一個(gè) FileList 對(duì)象,這個(gè)對(duì)象是一個(gè)包含了許多 File 文件的列表。File 對(duì)象是特殊類型的 Blob,且可以用在任意的 Blob 類型的 context 中。比如說, FileReader, URL.createObjectURL(), createImageBitmap(), 及 XMLHttpRequest.send() 都能處理 Blob 和 File。

3、4、沒做過不知道;

2017年6月5日 16:46
編輯回答
入她眼

可以用formData上傳文件

2017年3月6日 04:00
編輯回答
囍槑

應(yīng)該是 input name=up[] 設(shè)置成數(shù)組 這樣才可以接受多個(gè)文件,不然接受的總是最后一個(gè)文件?不知道是不是

2018年8月2日 14:52