对我来说,建议的文件名存储在头文件Content-Disposition中:
Content-Disposition: attachment; filename="suggestion.zip"
我正在从nexus下载文件,因此对于不同的服务器/应用程序,它可能存储在不同的标头字段中,但是很容易通过诸如firebug的firebug之类的工具来查找。
以下几行对我来说很好
URL url = new URL(urlString);// open the connectionURLConnection con = url.openConnection();// get and verify the header fieldString fieldValue = con.getHeaderField("Content-Disposition");if (fieldValue == null || ! fieldValue.contains("filename="")) { // no file name there -> throw exception ...}// parse the file name from the header fieldString filename = fieldValue.substring(fieldValue.indexOf("filename="") + 10, fieldValue.length() - 1);// create file in systems temporary directoryFile download = new File(System.getProperty("java.io.tmpdir"), filename);// open the stream and downloadReadableByteChannel rbc = Channels.newChannel(con.getInputStream());FileOutputStream fos = new FileOutputStream(download);try { fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);} finally { fos.close();}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)