[英]NodeJS Buffer Base64 File Limits
嘗試使用Base64上傳圖像,但是如果字符串較長,則存儲圖像的底部為空白白色。
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);
};
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.