jsp下载重命名问题 最近做一个项目需要用到上传下载,文件上传在服务器中 为防止文件名重复,我用时间的gettime()方法 做文件名,原文件名和修改后的文件名都保存到数据库中,下载不是用文件读取,二十用超链接直接连接服务器,问下载时,怎么样将文件名变为原来的文件名 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 直接连接向服务器不太安全。原文件名可能为中文的,那么直接不好做!下载不了,不能有中文路径!你可能会说,把中文编码不就得了,确实,经过URLEncoder编码后是可以,但是编码后你总得解码吧?这个解决不也就是要在后台操作了吧。既然这样,个人认为写下载方法,传个ID过来,然后去做一个查询的操作。这里你就可以获取到文件存放路径、原文件名了,然后你在以URLEncoder编码这样在客户端不会是乱码了。部份代码如下:response.setContentType("application/x-msdownload;charset=utf-8");response.reset();// 清除缓存中的数据response.setHeader("Content-Disposition","attachment;filename="+java.net.URLEncoder.encode(fileName,"utf-8"));BufferedOutputStream output = new BufferedOutputStream(response.getOutputStream());int byteread = 0;while ((byteread = input.read(buf)) != -1) { output.write(buf, 0, byteread);}response.flushBuffer();//这句代码很重要,把缓冲区中的所有数据发往客户端 原来出现+++++++++++的原因是:我从数据库中读取的文件名后有空格,因为数据库的字段我设置成char类型的,讲字符串trim一下就OK了 关于JS发送Ajax到servlet的问题 org.apache.jasper.JasperException: Unable to compile class for JSP: 请教一个Maven的问题 求助: maven 报错 tomcat 什么时候创建servlet的实例? 如何实现图片的上传和处理 在JS里面下面的结果是什么? 如何查询两个时间值之间的数据 hoho,我也发现一例倒粪的 作业提交系统讨论,来者有分(300分) javaWeb单点登录...求解? java与Tomtom的运行机制
原文件名可能为中文的,那么直接不好做!下载不了,不能有中文路径!你可能会说,把中文编码不就得了,确实,经过URLEncoder编码后是可以,
但是编码后你总得解码吧?这个解决不也就是要在后台操作了吧。既然这样,个人认为写下载方法,传个ID过来,然后去做一个查询的操作。
这里你就可以获取到文件存放路径、原文件名了,然后你在以URLEncoder编码
这样在客户端不会是乱码了。部份代码如下:response.setContentType("application/x-msdownload;charset=utf-8");
response.reset();// 清除缓存中的数据
response.setHeader("Content-Disposition","attachment;filename="+java.net.URLEncoder.encode(fileName,"utf-8"));
BufferedOutputStream output = new BufferedOutputStream(response.getOutputStream());
int byteread = 0;
while ((byteread = input.read(buf)) != -1) {
output.write(buf, 0, byteread);
}
response.flushBuffer();//这句代码很重要,把缓冲区中的所有数据发往客户端