在我的项目中,我正在上传一个文件。上传时,我将其原始文件名和扩展名保存在数据库中,并将该文件与一些GUID
一起保存在服务器上,生成的GUID也与文件名和扩展名一起存储在数据库中。
比如--
-用于上载的文件名为Questions.docx
-则orignalFileName将为“问题”
-文件扩展名将为“.docx”
-上传文件,文件名为“0C1B96D3-AF54-40D1-814D-B863B7528B1C”
上载工作正常。但是当我下载一些文件时,它以文件名作为GUID下载,在上面的情况下,它是“0c1b96d3-af54-40d1-814d-b863b7528b1c”。
我如何下载一个文件,它的原始文件名,即“questions.docx”。
已添加代码
/**
* code to display files on browser
*/
File file = null;
FileInputStream fis = null;
ByteArrayOutputStream bos = null;
try {
/**
* C://DocumentLibrary// path of evidence library
*/
String fileName = URLEncoder.encode(fileRepo.getRname(), "UTF-8");
fileName = URLDecoder.decode(fileName, "ISO8859_1");
response.setContentType("application/x-msdownload");
response.setHeader("Content-disposition", "attachment; filename="+ fileName);
String newfilepath = "C://DocumentLibrary//" + systemFileName;
file = new File(newfilepath);
fis = new FileInputStream(file);
bos = new ByteArrayOutputStream();
int readNum;
byte[] buf = new byte[1024];
try {
for (; (readNum = fis.read(buf)) != -1;) {
bos.write(buf, 0, readNum);
}
} catch (IOException ex) {
}
ServletOutputStream out = response.getOutputStream();
bos.writeTo(out);
} catch (Exception e) {
// TODO: handle exception
} finally {
if (file != null) {
file = null;
}
if (fis != null) {
fis.close();
}
if (bos.size() <= 0) {
bos.flush();
bos.close();
}
}
这个代码是完美的吗?
您只需从数据库中获取原始名称并在content-disposition
头中设置它:
@RequestMapping("/../download")
public ... download(..., HttpServletResponse response) {
...
response.setHeader("Content-Disposition", "attachment; filename=\"" + original + "\"");
}
您应该将您的原始文件名设置到响应头中,如下所示:
String fileName = URLEncoder.encode(tchCeResource.getRname(), "UTF-8");
fileName = URLDecoder.decode(fileName, "ISO8859_1");
response.setContentType("application/x-msdownload");
response.setHeader("Content-disposition", "attachment; filename="+ fileName);
希望能帮助您:)
我想下载一个文件,同时保留文件的文件名。 我有: 我可以下载文件,但我下载的文件名总是“downloadFile”。pdf或下载文件。巴布亚新几内亚'。 如何保留原始文件名?谢谢
如果我们将此链接粘贴到Chrome或Safari,它将开始下载。 但问题是 null 添加&download=“mywork.fbx” 使用PHP头('content-disposition:attachment;filename=“mywork.fbx”');fbx文件名是我的,但是带宽也是我的,不仅仅是Google Drive!!! 检查堆栈溢出中的项目,但找不到正确的项目
问题内容: 是否可以获取通过HttpURLConnection下载的文件的名称? 在上面的示例中,我无法从URL中提取文件名,但是服务器会以某种方式向我发送文件名。 问题答案: 您可以使用HttpURLConnection.getHeaderField(String name) 获取标头,该标头通常用于设置文件名: 正如其他答案指出的那样,服务器可能返回无效的文件名,但是您可以尝试使用它。
vue 下载文件流怎么保留原文件名? elink.download 怎么获取原文件名
在edge中,我正在访问一个JSP页面,该页面会返回一个文件。它在chrome中工作得很好,但在Edge和Internetexplorer中,我会将mime类型附加到文件名中。 这是响应标头: Edge要求我保存文件,文件名是 persistenceIDs.xlsx.vnd.openxmlformats-officedocument.spreadsheetml.sheet 有什么想法吗?
如何在Struts2中获得上传文件的原始文件名。目前我得到的是一个filename.tmp的文件名,而上传的文件是一个CSV,文件名与我得到的不同。这是JSP代码 下面是strut配置中的动作映射 Action类包含以下3个实例变量实例以及getter和setter 但是,未获取实际文件名,而和属性为。