簡體   English   中英

如何在Node.js中將base64解碼為圖像文件?

[英]How to decode base64 to image file in Node.js?

我知道這個問題已經被問過幾次了,但是不幸的是,似乎沒有什么對我有用。

我將img的src發布到我的節點/表達式。 看起來像這樣:

data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD//gA+Q1JF ... UUUUAFFFFAH/2Q==

數據保存在圖片中。 我剪切了data:image-stuff並得到了原始的base64和文件類型。

    var result = {
        "type":"",
        "data":""
    }

    var matches = picture.match(/^data:image\/([A-Za-z-+\/]+);base64,(.+)$/),response = {};
    result.type = matches[1];
    result.data = new Buffer(matches[2], 'base64');

    require('fs').writeFile(mediaFolder+'/test.'+result.type, result.data, "binary", function(err){
        res.status(500).send("error");
    });

    res.status(200).send("success");

當我嘗試打開保存的圖像時,它說:損壞或太大。 我還嘗試在writeFile方法中設置“ binary”參數。 客戶端始終獲得200 http狀態。

我不知道這是怎么回事。 我用在線解碼器檢查了原始的base64字符串。 效果很好。 我記錄了每個字符串/匹配項,一切對我來說都還不錯。

任何幫助都將很好解決這個問題。
提前致謝!

編輯:

這是我發送圖片的方式:

var base64Image = $('#show-picture').attr('src');
xmlhttp.open("POST","/webapp-ajax",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("picture="+base64Image);

我相信您需要在發送到服務器之前使用encodeUriComponent(base64)

嘗試發送JSON對象,然后在客戶端解析圖像。

例如:

var mimeType = image.split(';')[0];

var base64 = encodeUriComponent(image.split(',')[1]);

var imageData = {

  "mimeType" : mimeType,

  "src" : base64

}

...

xmlhttp.setRequestHeader("Content-type","application/json");
xmlhttp.send(imageData);

暫無
暫無

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

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