Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Dropbox API-强制直接下载_Javascript_Node.js_Dropbox Api - Fatal编程技术网

Javascript Dropbox API-强制直接下载

Javascript Dropbox API-强制直接下载,javascript,node.js,dropbox-api,Javascript,Node.js,Dropbox Api,我使用dropbox API将文件上传到dropbox,然后生成一个可共享的链接并将这些链接发送给用户 但问题是我想强制下载文件,而不是通过dropbox共享链接预览 我知道我可以在链接的末尾强制下载设置?dl=1,但是dropbox生成的可共享链接返回?dl=0 代码: request.put('https://api-content.dropbox.com/1/files_put/auto/reports/' + req.body.Name +'.pdf', {

我使用dropbox API将文件上传到dropbox,然后生成一个可共享的链接并将这些链接发送给用户

但问题是我想强制下载文件,而不是通过dropbox共享链接预览

我知道我可以在链接的末尾强制下载设置
?dl=1
,但是dropbox生成的可共享链接返回
?dl=0

代码:

 request.put('https://api-content.dropbox.com/1/files_put/auto/reports/' + req.body.Name +'.pdf', {
                headers: {
                    Authorization: 'TOKEN',
                    'Content-Type': 'application/pdf'
                },
                body: content
            }, function optionalCallback(err, httpResponse, bodymsg) {
                if (err) {
                    console.log(err);
                }
                else {
                    console.log("File uploaded to dropbox successfully!");
                    fs.unlink(temp_dir + 'report.pdf', function(err) {
                        if (err)
                            throw err;
                        else {
                            console.log("file deleted from server!");
                        }
                    });
                    request.post('https://api.dropboxapi.com/1/shares/auto/reports/' + req.body.Name + '.pdf'+ '?short_url=false?dl=1', {
                        headers: {
                            Authorization: 'TOKEN'
                        }
                    }, function optionalCallback(err, httpResponse, bodymsg) {
                        if (err) {
                            console.log(err);
                        }
                        else {
                            console.log('Shared link 2 ' + JSON.parse(httpResponse.body).url);
                            res.json(JSON.parse(httpResponse.body).url);
                        }
                    });

                }
        });

我正在使用dropbox API的V1,该API不久将被弃用,但现在我需要使用它。

使用
dl=1
URL参数是在这些链接上强制下载的正确方法。您可以在此处找到有关这方面的更多信息:


要正确地执行此操作,您应该使用实际的URL解析器来解析URL。然后,如果它已经有一个
dl
参数,则将其设置为
1
。如果没有,则将
dl
参数设置添加到
1

您可以利用流,只需将下载流重定向到客户端。下面是一个使用我的简约包装器和路由配置的示例:

{
    path: '/getFile',
    method: 'GET',
    handler: (request, response) => {
        dropbox({
            resource: 'files/download',
            parameters: {
                path: '/dropbox/image.jpg'
            }
        }, (err, result) => {
            //download completed
        }).pipe(response); //piping file stream
    }
}