我正在构建允许用户将URL发布到内容存储库中的文件,该存储库将被下载并上载到我们的应用程序数据库。我正在尝试使用以下代码行从URL派生文件名
URL url = new URL(fileUrl);
String fileName = url.getPath();
fileName = fileName.substring(fileName.lastIndexOf("/") + 1);
但有时URL并没有明显的文件名。因此,我决定使用标题字段“Content-Disposition”来确定文件名。我有以下代码
URLConnection conn = url.openConnection();
String raw = conn.getHeaderField("Content-Disposition");
if (raw != null && raw.indexOf("=") != -1) {
String[] args = raw.split(";");
for (String arg:args) {
if (arg.trim().startsWith("filename=")) {
fileName = arg.split("=")[1];
fileName = fileName.replace("\"","");
break;
}
}
我正在使用的示例网址是
当我使用单元测试运行它时,此代码工作正常。但是,当我将其部署到我在Jetty上运行的Web应用程序时,找不到请求标头字段。我正在使用JMeter将请求发送到Web应用程序。这可能有什么问题?
答案 0 :(得分:0)
我通过更改代码来解决问题,使用HttpClient下载文件,然后检查Content-Disposition的响应头。如果未找到,则使用主机名和时间戳生成随机文件。