簡體   English   中英

NodeJS緩沖區Base64文件限制

[英]NodeJS Buffer Base64 File Limits

嘗試使用Base64上傳圖像,但是如果字符串較長,則存儲圖像的底部為空白白色。

upload.js

var uuid = require('node-uuid');
var fs = require('fs');

exports.uploadImage = function(base64Str, callback) {
    var filename = uuid.v1()+'.png';
    var bitmap = new Buffer(base64Str, 'base64');
    fs.writeFileSync(filename, bitmap);
    callback(filename);
};

server.js

var fs = require('fs');
var restify = require('restify');  
var server = restify.createServer();
server.use(restify.bodyParser());

var upload = require('./modules/upload');

server.post('/images', function(req, res) {
    upload.uploadImage(req.params.myImage, function(filename) {
        console.log('processing image');
        res.send(filename);
        res.end();
    });
});

server.listen(3000);

它適用於長度為499016字節的字符串,但不適用於該字符串為847508字節的字符串。 是否有文件記載的大小限制?如果沒有,我如何上傳和取消編碼較長的字符串?

您可能正在達到請求大小限制。 一種選擇是將您的圖像作為multipart/form-data 您可以使用mapFiles中的mapFiles選項執行此restify.bodyParser ,並且可以通過選擇文件而不是Postman表單數據中的文本來進行測試。

編輯: fs.rename在這里出於測試目的可能更有意義。 在實際的應用程序中,您可能想將上傳的文件保存在其他位置,也許在s3上。

var fs = require('fs');
var restify = require('restify');
var server = restify.createServer();
server.use(restify.bodyParser({
    mapFiles: true
}));

var uuid = require('node-uuid');
var fs = require('fs');

var uploadImage = function(path, callback) {
    var filename = uuid.v1() + '.png';
    fs.rename(path, filename, function(err) {
        if (err) {
            throw err;
        }
        callback(filename);
    });
};

server.post('/images', function(req, res) {
    uploadImage(req.files.myImage.path, function(filename) {
        res.send(filename);
        res.end();
    });
});

server.listen(3000);

暫無
暫無

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

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