当前位置: 首页 > 面试题库 >

HttpURLConnection下载的文件名

西门凯康
2023-03-14
问题内容

是否可以获取通过HttpURLConnection下载的文件的名称?

URL url = new URL("http://somesite/getFile?id=12345");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setAllowUserInteraction(false);
conn.setDoInput(true);
conn.setDoOutput(true);
conn.connect();
InputStream is = conn.getInputStream();

在上面的示例中,我无法从URL中提取文件名,但是服务器会以某种方式向我发送文件名。


问题答案:

您可以使用HttpURLConnection.getHeaderField(String
name)
获取Content- Disposition标头,该标头通常用于设置文件名:

String raw = conn.getHeaderField("Content-Disposition");
// raw = "attachment; filename=abc.jpg"
if(raw != null && raw.indexOf("=") != -1) {
    String fileName = raw.split("=")[1]; //getting value after '='
} else {
    // fall back to random generated file name?
}

正如其他答案指出的那样,服务器可能返回无效的文件名,但是您可以尝试使用它。



 类似资料:
  • 本文向大家介绍JAVA通过HttpURLConnection 上传和下载文件的方法,包括了JAVA通过HttpURLConnection 上传和下载文件的方法的使用技巧和注意事项,需要的朋友参考一下 本文介绍了JAVA通过HttpURLConnection 上传和下载文件的方法,分享给大家,具体如下: HttpURLConnection文件上传 HttpURLConnection采用模拟浏览器上传

  • 我编写了一个java程序来从url NSE Bhavcopy下载文件 但是我得到了“thread'main'java.net.ConnectException:Connection timed Ut:Connect”,我尝试了以下排列和组合,但没有成功。 null 以下是代码和跟踪以供参考,有人可以帮助我吗 痕迹

  • 在我的项目中,我正在上传一个文件。上传时,我将其原始文件名和扩展名保存在数据库中,并将该文件与一些一起保存在服务器上,生成的GUID也与文件名和扩展名一起存储在数据库中。 比如-- -用于上载的文件名为Questions.docx -则orignalFileName将为“问题” -文件扩展名将为“.docx” -上传文件,文件名为“0C1B96D3-AF54-40D1-814D-B863B7528

  • 下载 <?php /** * 下载文件请求示例 */ require dirname(__DIR__) . '/vendor/autoload.php'; use Yurun\Util\HttpRequest; use Yurun\Util\YurunHttp; use Yurun\Util\YurunHttp\Handler\Swoole; $url = 'http://www.baid

  • 在我为客户制作的网站上,当他们尝试使用Internet Explorer 11下载文件时,他们无法从该站点下载文件。 这些文件保存在我们的服务器上,使用上传文件的数据库,位置,名称和MIME类型的文件能够被下载。例如,路径为“/uploaded _ files/6f/AE 69 BD 966 ba 4c 740 b 8073 ff 969 a 5425 b”,文件名为“Finland Test 1

  • 在edge中,我正在访问一个JSP页面,该页面会返回一个文件。它在chrome中工作得很好,但在Edge和Internetexplorer中,我会将mime类型附加到文件名中。 这是响应标头: Edge要求我保存文件,文件名是 persistenceIDs.xlsx.vnd.openxmlformats-officedocument.spreadsheetml.sheet 有什么想法吗?