在使用带有Dropbox Chooser的dropbox从dropbox中选择文件后,如何将文件存储在我的服务器中

时间:2016-04-14 08:55:23

标签: javascript java spring dropbox dropbox-api

我的网站上有一个表单。表单允许用户从本地计算机中选择文件或从下拉框中选择文件。我知道如何从本地机器获取文件,然后通过执行一些PHP内容将其存储在服务器中。

我对投放箱进行了研究,发现他们制作了一款名为“Chooser - Dropbox”的东西。 (基本上,它是一个小型JavaScript组件,可以让我们的网络应用程序从Dropbox获取文件),我们可以将“选择器”整合到我们的网站中,这非常棒。

但我的问题是,我不知道如何在使用其选配器从dropbox中选择文件后将文件存储在我的服务器中。(我基本上想从Chooser中选择文件后下载该文件并存储在我的服务器中)。

这是DropBox希望我们在我们的网站上放置的用于Chooser工作的java脚本

<script type="text/javascript" src="https://www.dropbox.com/static/api/2/dropins.js" id="dropboxjs" data-app-key="YOUR_APP_KEY"></script>

从JavaScript触发选择器:

var button = Dropbox.createChooseButton(options);
document.getElementById("container").appendChild(button);

以下是选项:

options = {

    // Required. Called when a user selects an item in the Chooser.
    success: function(files) {
        alert("Here's the file link: " + files[0].link)
    },

    cancel: function() {

    },

    linkType: "direct", // or "direct"

    multiselect: false, // or true

    extensions: ['.pdf', '.doc', '.docx'],
};

成功回调我有一个文件的下载链接,我们从dropbox中选择。

我在前端使用jquery而在后端使用spring。

将下载链接传递到java端,我们可以将dropbox文件下载到本地机器,然后我可以将其上传到应用服务器。

但有没有办法将其上传到应用程序服务器而无需下载文件到本地计算机。

请帮帮我。

1 个答案:

答案 0 :(得分:0)

成功阻止我正在获取文件下载链接。

 success: function(files) {
        alert("Here's the file link: " + files[0].link)
    }

再次使用ajax,我将这个下载链接传递给spring控制器,从控制器到服务类。

在使用以下代码的服务类中,我们可以将文件保存到服务器路径。

        File newFile = new File("here write server path");

        if(!newFile.exists()){
            URL url = new URL(downloadLink);
            ReadableByteChannel rbc = Channels.newChannel(url.openStream());
            FileOutputStream fos = new FileOutputStream(newFile);
            fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
            fos.close();
            rbc.close();
        }