我一直在尝试重新实现像Mozilla Hacks网站上的 HTML5图像上传器,但它适用于WebKit浏览器.部分任务是从canvas
对象中提取图像文件并将其附加到FormData对象以进行上载.
问题是虽然canvas
具有toDataURL
返回图像文件表示的函数,但FormData对象仅接受来自File API的 File或Blob对象.
Mozilla解决方案使用以下仅限Firefox的功能canvas
:
var file = canvas.mozGetAsFile("foo.png");
Run Code Online (Sandbox Code Playgroud)
...在WebKit浏览器上不可用.我能想到的最好的解决方案是找到一种方法将数据URI转换为File对象,我认为它可能是File API的一部分,但我不能为我的生活找到一些东西.
可能吗?如果没有,任何替代方案?
谢谢.
我正在使用 MEAN.io,并且正在尝试上传 Base64 编码的图像。
客户端,AngularJS:
// Image we're going to send it out
var base64Image = files[i];
var file = {
image: base64Image,
type: type,
filetype: extension,
characterId: character._id
};
var newFile = new MediaSendBase64(file);
newFile.$save(function(image) {
if ( !image ) {
console.log('ERROR IMAGE');
}
else {
console.log('SUCCESS.');
console.log(image);
}
});
Run Code Online (Sandbox Code Playgroud)
服务器端、NodeJS、控制器:
app.use(bodyParser.json({limit: '50mb'}));
app.use(bodyParser.urlencoded({limit: '50mb', extended: true}));
exports.uploadBase64 = function(req, res, next) {
var uploadPath = path.normalize(process.cwd() + '/packages/characters/public/assets/uploads/'),
data = new Buffer(''),
imgURL = undefined, // public URL …
Run Code Online (Sandbox Code Playgroud)