2013-07-28 222 views
-1

我制作了一个程序,用于从Dropbox下载.zip存档,客户端使用该存档,但每次我尝试打开存档时,都会显示“无法打开文件”文件位置“作为存档”我解决这个问题呢?已下载的Dropbox文件损坏

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"); 

我在做什么错?我不认为这是导致问题的网址
另外,我检查出的所有其他线程都提示(并且当我使用goover)时出现了这个问题,所有的答案都没有帮助,或者我没有了解他们(如在其中被解释得不好)

回答

1

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

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

但是,我不知道怎么的Dropbox索引他们的文件,这样的链接可能会为你读这个答案的时间而改变。

+0

dl = 1强制下载,而不需要他点击“下载”按钮。正如这里所建议的:[https://www.dropbox.com/en/help/201] –

1

如果你去你指定的位置:https://www.dropbox.com/s/a8itscdtu81jj2z/armorhud.zip,你会看到一个页面,其中包含一个下载按钮。您不能指望您的代码自动转到下载按钮将发送给您的URL。

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

另外,如果您想要更好地将文件与应用程序接口,请参阅Dropbox Core API和其他API。

0

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