我正在尝试使用以下代码下载文件。我需要确定要下载的文件的文件名和mime类型。我正在下载的URL不包含文件名。我已经查看了下面使用的缓冲流的方法,但没有看到任何方法。
con = (HttpURLConnection) url.openConnection();
//authenticate this request
if (passwordAuthentication != null) {
String auth = passwordAuthentication.getUserName()+":"+passwordAuthentication.getPassword();
con.setRequestProperty("Authentication", Base64.encodeBase64(auth.getBytes()).toString());
}
BufferedInputStream bis = new BufferedInputStream(con.getInputStream());
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file.getName()));
while ((i = bis.read()) != -1) {
bos.write(i);
}
bos.flush();
bis.close();
我看到我可以通过String contentType = con.getHeaderField("Content-Type");
获取它,但是返回text/html
而不是正在下载的实际文件的ContentType。
修改:这不是重复的问题,另一种方法不提供解决方案,如下所述。
我现在尝试保存没有文件扩展名的文件并使用MagicMatch match = Magic.getMagicMatch(file, true);
,但它会返回text/plain
。我猜这是因为我没有文件扩展名就保存了它。