Попытка отправить изображение в базу данных Oracle, но плохо открывается - PullRequest
0 голосов
/ 13 апреля 2020

Итак, я пытаюсь отправить изображение в 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;
    }
}

Надеюсь, это поможет.

...