0
尋找一些newb NodeJS幫助。那裏有一些簡單的東西我可以忽略,但我試過這幾種方式,並且不斷得到奇怪的結果。無法使用Node.js讀取和寫入二進制數據
我從this question以下大部分代碼。
// 128Kb Chunks
var targetSize = 131072;
// Open the file
fs.open('/project/input.png', 'r', function(err, fd) {
// Gather some info about the file
fs.fstat(fd, function(err, stats) {
var bufferSize=stats.size,
chunkSize=targetSize,
buffer=new Buffer(bufferSize),
bytesRead = 0,
isFinal = false;
while (bytesRead < bufferSize) {
if ((bytesRead + chunkSize) > bufferSize) {
chunkSize = (bufferSize - bytesRead);
isFinal = true;
} else {
isFinal = false;
}
fs.read(fd, buffer, bytesRead, chunkSize, bytesRead);
bytesRead += chunkSize;
if(isFinal) {
fs.writeFileSync("/project/output.png", buffer);
}
}
});
// Done
fs.close(fd);
});
當我輸出的output.png文件,該文件具有相同的文件大小爲我的輸入(所以必須有所八九不離十工作?),我的圖像瀏覽器無法讀取該文件,因此它以某種方式損壞。
我試圖保持這個問題,例如儘可能簡單,但如果它的事項或提示進一步的意見,這裏有我的核心目標:
- 閱讀文件中固定的塊大小(128KB)
- 加密並存儲在MongoDB中每個塊(這裏故意除外)
- 以後能夠重新組裝上
我感謝所有幫助您可以給圖像。
更新: 找到了答案,並預期它很簡單。
我複製的代碼有一個小的錯誤,即fs.close()
被讀取之前它的流正被關閉。
這也是可見,當我添加了一個回調到我的fs.read,其中有一個 'ERR' 第一個參數:
[Error: EBADF, read] errno: 9, code: 'EBADF'
所有好的建議,我很感激他們,但正如你所警告的那樣,他們對結果沒有影響:\ \ – LukeChavers