我正在设计一个应用程序从服务器检索.zip文件,在接收时将其提取到SD卡。
我想我可以弄清楚提取,但我不确定从服务器发送.zips的最佳方法是什么。它现在只需要一种方式,但在将来我想添加版本控制,如果重要的话。
我做了一些研究并研究了JSON,但我找不到任何发送.zip文件的例子。 http连接似乎是一个类似的选项,我知道我可以收到.zips,但我认为版本控制不会那么容易实现。对这两种方法中的任何一种提出任何建议,或者如果你认为另一种方式会更好,我也会对此持开放态度。
答案 0 :(得分:0)
我认为你可以在android网站上使用标准的HttpUrlConnection
,只需给它一个URL
指向服务器上的zip文件。
然后您可以将其下载到设备上的本地文件夹中。 下面是我如何下载Excel文件的示例(zip和excel文件都是二进制文件 - 所以它应该是相同的)。
如果你想进行某种版本控制,你可能最好在服务器端(如果可能的话)使用服务器提供的任何东西(例如php)。 然后制作一个小的PHP脚本,检查可用的zip文件的版本并发送响应(可能是json响应)。
URL url = new URL("yourURL");
HttpURLConnection httpConnection = (HttpURLConnection) url
.openConnection();
httpConnection.setRequestMethod("GET");
httpConnection.setDoOutput(true);
httpConnection.connect();
InputStream input = httpConnection.getInputStream();
OutputStream output = new FileOutputStream(new File(activity
.getFilesDir().getPath() + "/" + "yourFileName.zip"));
byte buffer[] = new byte[1024];
int len1 = 0;
int bytesWritten = 0;
while ((len1 = input.read(buffer)) > 0) {
output.write(buffer, 0, len1);
bytesWritten += len1;
}
output.flush();
output.close();
input.close();
答案 1 :(得分:0)
使用清单文件并先获取。检查清单文件(包含其他文件列表的文件),并查看本地存储是否包含这些文件。如果确实如此 - 每个人都很开心。如果没有,则将清单列出的文件放到本地存储中。
请勿直接使用上述代码。使用一些UI反馈告诉用户您正在下载一些文件(并且最好先询问他们以防他们想要交换到wifi)。首先获取清单是可以的,只是不要在没有询问的情况下获取丢失的文件。
我为我的游戏“barcode beasties”执行此操作,该游戏在首次运行时下载约20Mb的音频资产。我还可以添加更多音频位而无需推出新版本。 Android也非常聪明地解压缩zip文件,但同样,请确保告诉用户发生了什么,并让他们能够取消或返回而不会杀死主活动线程。