我正在嘗試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)
如何獲得文件名?
是的,我找到了。但有什麼好看的方式來獲取文件名比字符串contentDisposition = conn.getHeaderField(「Content-Disposition」); int fileNamePosition = contentDisposition.lastIndexOf(「fileName」); String filename = contentDisposition.substring(fileNamePosition + 9);? –
@NikitinMikhail這是做到這一點的唯一方法,它不會看起來很糟糕。 –
謝謝。我會記住它。 –