0

我正在尝试使用 Android 从 URL 中查找文件大小,但我得到 getContentLength():-1,但如果我将在任何浏览器中打开 url,则浏览器可以计算文件大小,因为浏览器也是客户端应用程序。

我的代码:

 try {
        URL url = new URL("https://www.dropbox.com/s/mk75lhvi96gkc00/match.flv?dl=0");
        connection = (HttpURLConnection) url.openConnection();
        connection.setRequestMethod("GET");
        connection.connect();

        // expect HTTP 200 OK, so we don't mistakenly save error report
        // instead of the file
        if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) {
            return "Server returned HTTP " + connection.getResponseCode()
                    + " " + connection.getResponseMessage();
        }

        // this will be useful to display download percentage
        // might be -1: server did not report the length
        int fileLength = connection.getContentLength();

        //fileLength  : -1;  

    } catch (Exception e) {
        return e.toString();
    } finally {
        try {
            if (output != null)
                output.close();
            if (input != null)
                input.close();
        } catch (IOException ignored) {
        }

        if (connection != null)
            connection.disconnect();
    }

这是我上面的 android 代码,我得到 -1 作为文件长度,但相同的 URL 文件大小可以由浏览器轻松计算。

请建议我一些解决方案。

4

2 回答 2

1

尝试将链接从

"https://www.dropbox.com/s/mk75lhvi96gkc00/match.flv?dl=0" 

"https://www.dropbox.com/s/mk75lhvi96gkc00/match.flv?dl=1"
于 2017-06-30T15:34:09.323 回答
1

这段代码对我来说很好:

public int getFileSizeFromURL(String urlPath) {
    int fileSize = 0;
    try {
        URL url = new URL(urlPath);
        HttpURLConnection connection = (HttpURLConnection)     url.openConnection();
        connection.setRequestMethod("GET");
        connection.connect();
        fileSize = connection.getContentLength();
        connection.disconnect();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return fileSize;
}

基于此答案的代码

于 2016-06-29T11:56:48.740 回答