Я хочу сохранить файл в виде большого двоичного объекта или потока файлов. У меня есть таблица в 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)
?