首页 > 解决方案 > 文件上传和下载 JavaScript

问题描述

编辑

希望有人能澄清我遇到的这个问题:

我想以二进制格式将文件存储在后端,并在获取它们并将它们转换为文件的原始状态后,我认为我的代码有问题,我正在使用 HTML 上传

这就是我将二进制数据发送到后端的方式:


  const handleSubmit = async file => {
    let formData = new FormData()
    formData.append('file', file)
    try {
      const res = await postInvoice(uuid, formData)
      console.log(res)
      setLoadingInvoice(false)
      setState({
        fileList: [],
        attachments: [],
        filesConverted: [],
      })
    }
  }
**edit with the api call, only missing hte url part which is in a different file**
export const postInvoice = async (id, data) => {
  return await request
    .post(BRattachments().post(id))
    .send(data)
    .set(getHeaders())
}

这就是我尝试下载 te bianrry 数据的方式:

const handleDownload = async value => {
    try {
      const res = await getInvoice(value.id)//api call
      
      const file = new Blob([response], {
        type: res.type,
      })
      saveAs(file, value.id + '.' + res.extension)//using save as to save import saveAs from 'file-saver'

    }
  }

**edited,this is the API CALL,I have them groued in a different file**
export const getInvoice = async ref => {
  return await request
    .get(BRattachments().getAll(ref))
    .send()
    .set(getHeaders())
    .responseType('blob')
}

问题是,每次我尝试下载任何保存的文件时,都会出现问题,使用 XLS 我只在文件中看到空值,使用 PNG 它说文件不是 PNG,等等。

希望有人能澄清我如何下载二进制文件并将其转换为可下载的文件。

谢谢

标签: reactjs

解决方案


推荐阅读