2012-07-19 41 views
1

我指的是下面的代碼從特定的URL下載文件。正在從網上下載文本文件,但問題與ePub/Pdf

public class FileFromServerExample extends Activity { 

    static String PACKAGE_NAME; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     PACKAGE_NAME = getApplicationContext().getPackageName();   

     File folder = new File("/data/data/" 
       + FileFromServerExample.PACKAGE_NAME + "/ePub/"); 
     boolean created = folder.isDirectory(); 
     if (!created) { 
      folder.mkdir(); 
     } 

     File file = new File(folder, "Sample.epub"); 
     try { 
      file.createNewFile(); 
     } catch (IOException e1) { 
      e1.printStackTrace(); 
     } 
     Downloader 
       .DownloadFile(
         "http://www.google.co.in/url?sa=t&rct=j&q=sample%20epub%20filetype%3Aepub&source=web&cd=2&ved=0CFMQFjAB&url=http%3A%2F%2Fdl.dropbox.com%2Fu%2F1177388%2Fflagship_july_4_2010_flying_island_press.epub&ei=i5gHUIOWJI3RrQeGro3YAg&usg=AFQjCNFPKsV-tieF4vKv7BXYmS-QEvd7Uw", 
         file); 
} 
} 

Downloader.java

public class Downloader { 

    public static void DownloadFile(String fileURL, File directory) { 
     try { 

      FileOutputStream f = new FileOutputStream(directory); 
      URL u = new URL(fileURL); 
      HttpURLConnection c = (HttpURLConnection) u.openConnection(); 
      c.setRequestMethod("GET"); 
      c.setDoOutput(true); 
      c.connect(); 

      InputStream in = c.getInputStream(); 

      byte[] buffer = new byte[1024]; 
      int len1 = 0; 
      while ((len1 = in.read(buffer)) > 0) { 
       f.write(buffer, 0, len1); 
      } 
      f.close(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

我在需要的位置越來越Sample.epub
但是當我嘗試打開該文件時,收到一條錯誤消息,指出不是有效的zip文件

我試着用不同的URL,與Pdf而不是ePub(它給文件損壞錯誤),但同樣的問題仍然存在。

但是,當我試圖從this sample link下載一個簡單的文本文件時,它正常工作。

所以,按常理,看來this URL下載ePub可能會被打破,但我成功下載了ePub這是不是這樣的,如果我訪問從我的PC瀏覽器的鏈接。
但是,當我嘗試從Android應用程序中的此鏈接下載ePub時,它不起作用。

任何想法,我哪裏會出錯?任何幫助讚賞。

+0

你正在測試哪個android系統? – 2012-07-19 08:55:12

+0

android 2.3 ...但它有什麼關係? – GAMA 2012-07-19 08:57:28

+0

,因爲android> 3.0不允許在「主UI線程」上進行Web請求。這就是爲什麼我只是檢查這種可能性。 – 2012-07-19 09:00:42

回答

2

這是因爲你沒有指向一個直接的url。而是在瀏覽器中,谷歌重定向到原來的網址。在你的情況下,原鏈接:

http://dl.dropbox.com/u/1177388/flagship_july_4_2010_flying_island_press.epub

,如果你嘗試下載該網址直接,你就會成功。

+0

oh gosh ...我怎麼能做出這樣一個愚蠢的錯誤...但我GOOGLE免費epub樣本,我打開其中一個鏈接,我從地址欄上面的鏈接(指定問題)...你怎麼得到這個鏈接? – GAMA 2012-07-19 09:09:46

+0

heyy沒有什麼奇特的事情在這裏完成。只需從谷歌搜索鏈接中獲取參數'url',然後使用複製的'epub'鏈接'URLDecode'。只是使用從這裏的在線服務:http://www.string-functions.com/urldecode.aspx – sunil 2012-07-19 09:50:31

+0

@GAMA如果它幫助你,PLZ標記爲答案 – sunil 2012-07-20 04:08:44