リモートイメージファイルをデータベースに保存しようとしていますが、これまでに行ったことがないのでいくつか問題があります。node/request/sequelize/mysqlを使ってイメージファイルをデータベースに保存します。
私は画像をダウンロードして、他のいくつかのプロパティを持つ(node-requestとともに)別のノードapiに渡して、mysqlデータベースに保存します(sequelizeを使用してください)。私はいくつかのデータを保存することができましたが、手動でダウンロードして開こうとすると、実際には使用できず、画像も表示されません。
node-requestでイメージを取得し、base64文字列に変換して(どこかで読んで)jsonペイロードに渡していましたが、うまくいきませんでした。マルチパートとして送信しようとしましたが、どちらもうまくいきませんでした。ストリーム/バッファ/マルチパートでは、これまでにノードでずっと以前とは全く関係がありませんでした。私はノード要求のパイプを調べてみましたが、実際にどのようにこのコンテキストに適用するかを理解できませんでした。ここで
は、私は現在、(NO「関数」キーワードはありませんので、それは一部の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として設定されます。
私は一度それを理解すると簡単だと確信していますが、これまでのところ私は困惑しています。