通过 NEXT.js 应用将 PDF 作为二进制数据上传到 SQL Server

问题描述 投票:0回答:0

我正在尝试解决这个问题:

我正在 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);
    })
}

pdf next.js varbinary
© www.soinside.com 2019 - 2024. All rights reserved.