Загрузка файлов в базу данных MS SQL с помощью Multer Nodejs - PullRequest
0 голосов
/ 22 марта 2020

Я хочу сохранить файл в виде большого двоичного объекта или потока файлов. У меня есть таблица в MS SQL, которая принимает varcharMax filestream, созданный следующим образом:

Create table MainFile(
    [Id] [uniqueidentifier] ROWGUIDCOL NOT NULL UNIQUE,
    JobFile VARBINARY(MAX) FILESTREAM,
    MainID INT
) 

Мой HTML5 интерфейс также уже настроен и отправляет загруженный файл на мой Nodejs сервер.

Большая часть документов, которые я нашел в Интернете, использует Multer для хранения файлов на диске. Но я хочу сохранить файл прямо в базе данных. Поэтому я настроил multer следующим образом:

const multer = require('multer')
const storage = multer.memoryStorage()
const upload = multer({ storage: storage })

router.post("/uploadFiles",upload.single('fileUpload'),async (req,res)=>{
    console.log(req.file)
    try{
        await rows
        await rows.query(`Insert into MainFile(MainID,JobFile) Values(${req.body.MainID},'${req.file}')`)
    }
    catch(err){
        console.log(err)
    }
})

Я знаю, что файл загружается правильно, потому что req.file дает что-то вроде:

buffer:Buffer(27017) [80, 75, 3, …]
encoding:"7bit"
fieldname:"fileUpload"
mimetype:"application/vnd.openxmlformats-officedocument.wordprocessingml.document"
originalname:"HW5.docx"
size:27017

Но когда выполняется запрос на вставку. Я получаю сообщение об ошибке:

RequestError: Неявное преобразование из типа данных varchar в varbinary (max) не допускается. Используйте функцию CONVERT для выполнения этого запроса.

Как вставить этот файл буфера в столбец varbinary(max)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...