2016-10-12 29 views
0

返回文件大小= -1我正在製作一個android應用程序,其中我從服務器獲取圖像存儲在mysql database.so我需要下載前的文件大小,我使用此代碼返回文件大小= -1從服務器在android中

 FileOutputStream fileOutput = new FileOutputStream(file); 

     InputStream inputStream = urlConnection.getInputStream(); 
    int totalSize = urlConnection.getContentLength(); 

但始終我得到總計TOTALSIZE = -1 1.I不知道這是爲什麼happening.plz幫我解決這個問題

+1

一個老問題的一個相關答案在這裏:[Android getContentLength總是返回-1下載apk文件時](http://stackoverflow.com/questions/32988325/android-getcontentlength-always-return-1-when-下載 - apk文件/ 32990226#32990226)和[更多相關答案可以在StackOverflow上找到](http://stackoverflow.com/search?q=android+getcontentlength+-1)。 –

回答

2

好像服務器沒有設置在響應頭Content-Length

+0

所以我可以這樣做,如在響應頭中設置Content-Length。 –

+0

是的,你可以做那個伴侶! – Carnal

+0

我該怎麼做 –

0

您的網絡服務器未設置適當的Content-Length標頭。

From the docs for URLConnection.getContentLength()

資源的內容長度此連接的URL引用,-1,如果內容長度未知,或者如果內容長度大於Integer.MAX_VALUE。

然而,即使getContentLength返回一個正整數向您展示的內容有多長,that may be entirely off

getContentLength()返回傳輸的字節數,並不能用來預測有多少可以從getInputStream()讀取壓縮流的字節。相反,讀取該流直至耗盡,即read()返回-1。

如果您確實需要知道文件大小,最好定義您自己的標題字段並使用該值。

0

也許尺寸大於int可以。最好使用getContentLengthLong()。這link可能會幫助你。

相關問題