2015-04-14 74 views
2

我正在嘗試http請求並創建http請求到服務器。服務器必須返回.zip文件。這裏是代碼:如何從服務器請求中獲取文件名?

 url = new URL(urlToRead); 
     conn = (HttpURLConnection) url.openConnection(); 
     conn.setRequestMethod("GET"); 
     is = conn.getInputStream(); 

然後我想將其寫入文件中像這樣:

r = 1; 
    while(r > 0){ 
    r = is.read(buf); 
    if(r > 0) 
    fos.write(buf, 0, r); 
    } 

而是創造FileOutputStream中我想使用由服務器提供的文件名。我發現服務器答案有文件名和所有的結構是這樣的:

HTTP/1.1 200 OK 
Date: Mon, 07 Apr 2003 14:51:19 GMT 
Server: Apache/1.3.20 (Win32) PHP/4.3.0 
Last-Modified: Mon, 07 Apr 2003 14:51:00 GMT 
Accept-Ranges: bytes 
Content-Length: 673 
Keep-Alive: timeout=15, max=100 
Connection: Keep-Alive 
Content-Type: application/zip 
Content-Disposition: attachment; filename=test.zip 
Pragma: no-cache 

....(zip content) 

如何獲得文件名?

回答

2

可以使用HttpUrlConnection對象的getHeaderField()方法來讀取內容處置頭。當它不存在時,也要確保你處理這種情況。

+0

是的,我找到了。但有什麼好看的方式來獲取文件名比字符串contentDisposition = conn.getHeaderField(「Content-Disposition」); int fileNamePosition = contentDisposition.lastIndexOf(「fileName」); String filename = contentDisposition.substring(fileNamePosition + 9);? –

+0

@NikitinMikhail這是做到這一點的唯一方法,它不會看起來很糟糕。 –

+0

謝謝。我會記住它。 –

0

如果u有ServletRequest對象(可以說OBJ),然後 我認爲這將有助於

obj.getRequestURL() ; 
相關問題