我正在尝试解决这个问题:
我正在 NEXT.js 中构建一个应用程序,用户应该在其中上传某些文档(pdf、docx 等)。我需要将这些文档作为 blob 存储在 SQL Server 中。我不知道应该如何将所选文件的数据内容传递给 API。我尝试使用 arrayBuffer 或将其转换为文本,然后转换为 varbinary 但没有成功。我可能需要完全不同的方法来解决这个问题,但找不到对我的特定情况有用的任何东西。 提前致谢!
async function filesUpload(e) {
e.preventDefault();
const file = e.target.file.files[0];
/** File validation */
if (!file.type.startsWith("application/pdf")) {
alert("Please select a valid document");
return;
}
const buffer = await file.arrayBuffer();
console.log(buffer)
console.log({DATA: await file.text()})
const endpoint = '/api/PostData/insertContractDoc';
const options = {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({DATA: await file.text()}),
}
//const response = await (await fetch(endpoint, options)).json()
return
}
这是我的 API 端点:
const sql = require('mssql');
const configOBJ = require('../../../components/configSQL.js');
export default async function getAll(req,res){
await sql.connect(configOBJ.confSQL).then(pool => {
console.log("insert into [CONTRACTDOCUMENTS] values(302,1,null,null,'adad',CAST("+ req.body.DATA+" AS VARBINARY(MAX)))")
let querySTR = "insert into [CONTRACTDOCUMENTS] values(302,1,null,null,'adad',CAST("+ req.body.DATA+" AS VARBINARY(MAX)))"
return pool.request().query(querySTR)
}).then(result => {
//console.log(result);
return res.status(200).json(result);
}).catch(err => {
// ... error checks
console.log(err);
return res.status(500).send(err);
})
}