Javascript NodeJS缓冲区Base64文件限制

Javascript NodeJS缓冲区Base64文件限制,javascript,node.js,base64,restify,Javascript,Node.js,Base64,Restify,尝试使用Base64上载图像,但如果字符串很长,则存储图像的底部为空白白色 upload.js server.js 它适用于长度为499016字节的字符串,但不适用于长度为847508字节的字符串。是否有文件规定的大小限制?如果没有,如何上载和取消对较长字符串的编码?您可能遇到了请求大小限制。另一种方法是将图像作为多部分/表单数据上传。您可以使用restify.bodyParser中的mapFiles选项执行此操作,您可以通过在邮递员表单数据中选择文件而不是文本来测试它 编辑:fs.rename

尝试使用Base64上载图像,但如果字符串很长,则存储图像的底部为空白白色

upload.js server.js
它适用于长度为499016字节的字符串,但不适用于长度为847508字节的字符串。是否有文件规定的大小限制?如果没有,如何上载和取消对较长字符串的编码?

您可能遇到了请求大小限制。另一种方法是将图像作为
多部分/表单数据上传。您可以使用
restify.bodyParser
中的
mapFiles
选项执行此操作,您可以通过在邮递员表单数据中选择文件而不是文本来测试它

编辑:
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);

如果图像来自浏览器,我会怀疑它不仅仅是节点…我正在使用在线编码器转换图像,然后使用Chrome Postman将其传递给节点。我怀疑在线编码器工具使用了第二个工具,但得到了相同的结果。请确保您是以二进制形式编写的,可能有些图像欺骗了编码检测器,并且您没有指定“二进制”…小图像可以完美解码,大图像可以部分决定图像的整体大小。NodeJS是否存在超时问题?不应该存在,但无论如何都应该使用异步。也许操作系统在HDD实际存档之前报告写操作已完成。延迟掉头有帮助吗?因为我的临时目录在不同的分区上,所以我得到了一个EXDEV错误。上面有两个可能的更改,移动我的临时目录
http://stackoverflow.com/questions/21071303/node-js-exdev-rename-error
或将
npm mv
模块替换为
fs。重命名
。我选择了后者,一切都很好。虽然答案很好,但我仍然想了解如何上传大图像base64编码。我试着设置bodyParser,希望它能解决问题。有人有什么想法吗?
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);
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);