Итак, я пытаюсь отправить изображение в Oracle базу данных, и оно работает, но оно не в хорошем формате, потому что это выглядит так:
Content-Disposition: form-data; name="image"; filename="1.jpg"
Content-Type: image/jpeg
//image format
и мне нужен только формат изображения, без верха.
Это мой код для размещения изображения:
const maxFileSize = 1024 * 1024 * 50; // 50 MB
let contentBuffer = [];
let totalBytesInBuffer = 0;
let contentType = req.headers['content-type'] || 'application/octet';
let fileName = req.headers['file-name'];
req.on('data', chunk => {
contentBuffer.push(chunk);
totalBytesInBuffer += chunk.length;
});
req.on('end', async function() {
contentBuffer = Buffer.concat(contentBuffer, totalBytesInBuffer);
const context = {
id: parseInt(req.params.id, 10),
file_name: fileName,
content_type: contentType,
content_buffer: contentBuffer
};
const fileId = await image.create(context);
res.status(201).json({succes: true});
}
И когда я ПОЛУЧАЮ изображение, это код :
const context = {
id: parseInt(req.params.id, 10)
}
const rows = await image.find(context);
if (rows.length === 1) {
res.status(200);
res.set({
'Cache-Control': 'no-cache',
'Content-Type': rows[0].content_type,
'Content-Length': rows[0].file_length,
'Content-Disposition': 'attachment; filename=' + rows[0].file_name
});
res.send(rows[0].image);
}
image.create () и image.find () - просто простые SQL. Я не знаю, что делать и как получить файл / изображение corect.
Это ссылка на учебник, откуда я пытался сделать это: https://jsao.io/2019/06/uploading-and-downloading-files-buffering-in-node-js/?unapproved=584&moderation-hash=a30eac5abf07cab32aeb6dd25cee2a1f#comment -584
Редактировать: Вот мое изображение. Создание:
const createSql = `insert into test_image (
id,
file_name,
content_type,
image
) values (
:id,
:file_name,
:content_type,
:content_buffer
)`;
async function create(context) {
try {
const binds = context;
result = await database.simpleExecute(createSql, binds);
return ;
} catch(err) {
console.log(err);
return err;
}
}
Надеюсь, это поможет.