簡體   English   中英

上傳文件Node.js Express put方法

[英]Uploading files Node.js Express put method

我正在嘗試使用XMLHttpRequest上傳文件,我正在拆分文件,chunk_size為10KB。 在服務器上我正在使用

app.route('/upload/').put(function(req, res, next) {

    var  buff =req._readableState.buffer[0];
    console.log('Buffer length: ' + buff.length);   
}

console.log:“緩沖區長度:10240”

我正在寫文件:

fs.write(fd,buff,0,buff.length,pos,function(){}

我沒有使用男生,雜技演員或人體分析器,並且一切都像一個魅力。

然后我將chunk_size更改為100KB,並且客戶端正在發送100KB,我檢查了Content-Length。

但是服務器正在接收31972字節,有時是64061字節。

console.log:“緩沖區長度:31972”

不知道發生了什么,任何幫助將不勝感激。

作為_readableState提示的主要下划線,它不是外部API,因此不建議使用。 這是關於流的文檔的摘錄:

可寫流和可讀取流都將在內部對象上緩沖數據,這些數據可以分別從_writableState.getBuffer()或_visibleState.buffer檢索。

...

流的目的(尤其是使用stream.pipe()方法)是為了將數據的緩沖限制在可接受的水平,以使速度變化的源和目標不會淹沒可用的內存。

因此,在這種情況下,實際情況是某些數據被放入流的內部隊列中,等待使用。

可讀流應該通過stream.read()並監聽data事件來使用,或者在這種情況下應該是最簡單的方法,通過pipe方法來使用,如下所示:

req.pipe(fs.createWriteStream("some/path"));

請參閱有關createWriteStream文檔

以這種方式拆分文件並非總是實用且高效的。

您可以嘗試一個名為files-io的節點包。 https://www.npmjs.com/package/files-io

希望該服務器達到您的目的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM