已下载的Dropbox文件已损坏

时间:2013-07-28 04:01:13

标签: java

我制作了一个从Dropbox下载.zip档案的程序,客户端使用该程序,但每次我尝试打开档案时,都会说“无法打开文件'文件位置'作为档案”如何修复此问题发生?

public void modDownload(String url, String filename) {
    try {
        URL dropbox = new URL(url);
        ReadableByteChannel rbc = Channels.newChannel(dropbox.openStream());
        FileOutputStream fos = new FileOutputStream(appdata + filename);
        fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
    } catch(Exception e) {      
    }
}

我称之为

modDownload("https://www.dropbox.com/s/a8itscdtu81jj2z/armorhud.zip",
            "armorhud.zip");

我做错了什么?我不认为这是导致问题的URL 此外,我检查了堆栈溢出建议的所有其他线程(以及当我发生了问题时),所有的答案都没有帮助,或者我不理解它们(因为它的解释很差)

3 个答案:

答案 0 :(得分:1)

如果您转到指定的位置:https://www.dropbox.com/s/a8itscdtu81jj2z/armorhud.zip,系统会显示包含下载按钮的页面。您不能指望您的代码自动考虑转到下载按钮将发送给您的URL。

它尝试做的是将HTML页面下载为ZIP文件,这就是为什么它无法将其作为存档打开的原因。 HTML文件不是存档。将您的网址更改为要下载的文件的实际位置。

另外,如果您想要一种更好的方法将文件与您的应用程序连接,请查看Dropbox Core API和其他API。

答案 1 :(得分:1)

打开您在浏览器中发布的链接,将鼠标悬停在“下载”按钮上。如果单击该按钮,将调用新链接。这是您需要在代码中使用的链接。这是我点击下载页面上的“下载”按钮获得的链接:

https://dl.dropboxusercontent.com/s/a8itscdtu81jj2z/armorhud.zip?token_hash=AAGVg84Z26vkuqJO-3bAX6BEQREt0UDtiDRkGZXWWa1y9A&dl=1

但是,我不确定Dropbox如何为其文件编制索引,因此在您阅读此答案时链接可能会发生变化。

答案 2 :(得分:0)

如果它位于您的公共区域,只需将文件网址中的dl替换为dl,否则您需要通过右键单击该文件来“获取链接”。如果您通过Web浏览器执行此操作,则可以使用它,如果您通过右键单击文件资源管理器来执行此操作,则需要将www更改为dl