将.zips从服务器发送到Android应用程序的最佳方式

时间:2011-10-20 15:32:36

标签: android json http zip

我正在设计一个应用程序从服务器检索.zip文件在接收时将其提取到SD卡

我想我可以弄清楚提取,但我不确定从服务器发送.zips的最佳方法是什么。它现在只需要一种方式,但在将来我想添加版本控制,如果重要的话。

我做了一些研究并研究了JSON,但我找不到任何发送.zip文件的例子。 http连接似乎是一个类似的选项,我知道我可以收到.zips,但我认为版本控制不会那么容易实现。对这两种方法中的任何一种提出任何建议,或者如果你认为另一种方式会更好,我也会对此持开放态度。

2 个答案:

答案 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文件,但同样,请确保告诉用户发生了什么,并让他们能够取消或返回而不会杀死主活动线程。