我試圖將遠程圖像文件保存到數據庫中,但由於以前從未做過,所以我遇到了一些問題。使用node/request/sequelize/mysql將圖像文件保存到數據庫中
我需要下載圖像並將其與一些其他屬性一起傳遞給另一個節點api(使用sequelize將其保存到mysql數據庫中)。我已經設法獲得一些數據來保存,但是當我手動下載並嘗試打開它時,它不是真正可用,也沒有圖像顯示。
我已經嘗試了一些事情:獲取與節點請求的圖像,將其轉換爲base64字符串(閱讀有關的地方),並傳遞它在JSON有效載荷,但沒有奏效。試圖發送它作爲一個多部分,但也沒有工作。還沒有在stream/buffers/multipart中使用過,而且從來沒有在node中使用過。我試過查看節點請求管道,但我無法弄清楚可能如何將它們應用於此上下文。
這裏是我現在有(這是一個部分ES6類,所以沒有「功能」的關鍵字;同時,請求promisified):
function getImageData(imageUrl) {
return request({
url: imageUrl,
encoding: null,
json: false
});
}
function createEntry(entry) {
return getImageData(entry.image)
.then((imageData) => {
entry.image_src = imageData.toString('base64');
var requestObject = {
url: 'http://localhost:3000/api/entry',
method: 'post',
json: false,
formData: entry
};
return request(requestObject);
});
}
我幾乎可以100%肯定問題出在這部分因爲api只是把它得到的東西放到桌子上,但我可能是錯的。圖像字段設置爲longblob。
我敢肯定這件事很簡單,一旦我知道了,但到目前爲止我很難過。