从nodejs服务器下载文件在客户端下载为损坏的文件

时间:2020-07-20 19:25:52

标签: node.js reactjs file blob

在客户端,这是一个React应用。我设置了一个可以向其请求文件的端点。但是,从pdfs到png到excel文件的每个文件在尝试从服务器下载时似乎都已损坏,无法成功打开这些文件中的任何一个。想知道是否有人对此有任何见识。找不到任何可行的方法。

有关后端和前端的代码,请参见下文。

后端node.js

    val directory = "Internal storage/Android/data/com.example.mypackage/files/TrainingVideos/trainingvideos.zip"

    var directoryToDelete = File(directory)

    var exists = directoryToDelete.exists()

    if ( exists ) {

        directoryToDelete.deleteRecursively()
    }

前端-反应

ChangeLogAttachment_read(req, res, id, file_path, file_type)
                    .then(resp => {
                        res.download(file_path, file_name, (error)=>{
                            if(error) {
                                console.log("Error", error);
                            }
                        });

                        // Tried these
                        // res.contentType(file_type);
                        // res.send(fs.readFileSync(file_path));
                        // res.send(resp)
                    })

                    .catch(err => {

                        err.location = 'Error in NS_Controller.changeLogAttachments read.';
                        log.error(err)
                    });

2 个答案:

答案 0 :(得分:0)

您应将axios标头对象中的响应类型更改为“ arraybuffer”

headers: {
        Authorization: 'Bearer ' + token,
        responseType:'arraybuffer'
      },

来源:https://github.com/axios/axios/issues/448#issue-176993853

答案 1 :(得分:0)

实际上能够解决它,因为响应类型blob必须位于标头之外,如下所示:

{ key2:"key2"}