您的位置:首页 > 运维架构

Topic: 一个中文名文件下载不了的问题!!!

2007-04-13 16:22 330 查看
1.一个中文名文件下载不了的问题!!! Copy to clipboard
Posted by: adelejxsx
Posted on: 2003-04-17 09:35

问题一:
假如在一台服务器上有一个文件:c:/upload/我的文件.doc,然后在jsp中有一个链接指向她,<a href="c:/upload/我的文件.doc">我的文件.doc</a>,运行的时候,如果你点这个链接会提示找不到这个文件。

问题二:
还是跟上面有关,上面那个doc文件是用JspSmartUpload来实现附件上载,上载的时候存储到服务器上时文件名已经经过了转码:(存放在c:/upload目录下)
java.net.URLEncoder.encode(fileName),换成了像下面这种形式的文件名:
%3D%2A%1A%3B%2B%3C%1D%1A.doc,然后用一个链接指向她,
<a href="c:/upload/%3D%2A%1A%3B%2B%3C%1D%1A.doc">我的文件.doc</a>,运行的时候,点这个链接时会弹出一个对话框,提示你“保存”或者“打开“,选择”保存“,这时候出现的保存文件名就是:%3D%2A%1A%3B%2B%3C%1D%1A.doc,我想保存对话框的文件名是原来的文件名,如"我的文件.doc",我该怎么办,有谁能帮我。。。。
第二个问题更重要。。。。
2.Re:一个中文名文件下载不了的问题!!! [Re: adelejxsx]Copy to clipboard
Posted by: rainman
Posted on: 2003-04-17 09:43

问题一,链接要用utf-8编码的bytes再加上URL Encoding。
问题二,建议文件名不要改成URL Encoding的,直接还原原来的文件名。
下载的时候,在http头送文件名时需要URL Encoding。
3.Re:一个中文名文件下载不了的问题!!! [Re: rainman]Copy to clipboard
Posted by: adelejxsx
Posted on: 2003-04-17 10:03

rainman wrote:
问题一,链接要用utf-8编码的bytes再加上URL Encoding。
问题二,建议文件名不要改成URL Encoding的,直接还原原来的文件名。
下载的时候,在http头送文件名时需要URL Encoding。

我上传文件用的是jspsmartUpload包,它自动把文件名URL Encoding,还有,我下载时只是一个链接,它指向本机的一个文件,这种情况下怎么在http头送文件名呢?
4.Re:一个中文名文件下载不了的问题!!! [Re: adelejxsx]Copy to clipboard
Posted by: rainman
Posted on: 2003-04-17 10:06

那就不要用jspsmartUpload咯。
上传文件的文件名是本机路径,你得从这个路径中取出文件名部分,然后保存在服务器上的时候用这个文件名。
5.Re:一个中文名文件下载不了的问题!!! [Re: adelejxsx]Copy to clipboard
Posted by: adelejxsx
Posted on: 2003-04-17 10:06

问题一的解决方法能举一个简单的例子吗?
不胜感激!@!@
6.Re:一个中文名文件下载不了的问题!!! [Re: adelejxsx]Copy to clipboard
Posted by: adelejxsx
Posted on: 2003-04-17 10:08

没办法,只能用这个,要不然用什么上传 ,别的我还要再学。时间好紧啊。。。。。
7.Re:一个中文名文件下载不了的问题!!! [Re: adelejxsx]Copy to clipboard
Posted by: rainman
Posted on: 2003-04-17 10:10

URLEncoder.encode(filename, "UTF-8");

filename是中文文件名。
8.Re:一个中文名文件下载不了的问题!!! [Re: adelejxsx]Copy to clipboard
Posted by: adelejxsx
Posted on: 2003-04-17 10:36

不好意思,再次麻烦。
你的意思是说:假如c:下有一个文件是:世界文化.doc,
我在JSP中写的代码是:

<%@ page contentType="text/html;charset=gb2312" session="true"%>
<%
String name=java.net.URLEncoder.encode("世界文化.doc","UTF-8"));
%>
<a href="c:/<%=name%>">世界文化.doc</a>


可是这样会提示找不到文件。
9.Re:一个中文名文件下载不了的问题!!! [Re: adelejxsx]Copy to clipboard
Posted by: adelejxsx
Posted on: 2003-04-17 11:34

没有人知道吗?
10.Re:一个中文名文件下载不了的问题!!! [Re: adelejxsx]Copy to clipboard
Posted by: jp_hao
Posted on: 2003-05-13 15:23

有没有哪位牛人把这个问题解决了,我也碰到了这个问题。
11.Re:一个中文名文件下载不了的问题!!! [Re: adelejxsx]Copy to clipboard
Posted by: floater
Posted on: 2003-05-13 22:13

search on Jute board.
12.Re:一个中文名文件下载不了的问题!!! [Re: rainman]Copy to clipboard
Posted by: bless
Posted on: 2003-05-22 15:51

向各位求救,有人能解答一下这个问题吗?万分的感谢
13.Re:一个中文名文件下载不了的问题!!! [Re: adelejxsx]Copy to clipboard
Posted by: 牛老板
Posted on: 2003-05-23 11:09

在win下,用gbk码,就不会有问题.

在UNIX下不好改...
14.Re:一个中文名文件下载不了的问题!!! [Re: 牛老板]Copy to clipboard
Posted by: bless
Posted on: 2003-05-23 15:55

牛老板 wrote:
在win下,用gbk码,就不会有问题.

在UNIX下不好改...

能说的详细一点吗?
15.Re:一个中文名文件下载不了的问题!!! [Re: adelejxsx]Copy to clipboard
Posted by: adelejxsx
Posted on: 2003-05-23 16:41

这是上传的页面:

<%@ page contentType="text/html;charset=gb2312"%>
<html>
<body>
<form method="post" name="QuestionAdd" action="QuestionAdded.jsp" ENCTYPE="multipart/form-data" Language="JavaScript" onSubmit="return Add_onsubmit()">
附件:<input type="file" name="attachmentName" size="36">
<input type="submit" name="Submit" value=" 提交 ">
</form>
</body>
</html>


这是上传页面的处理页面

<!--Head-->
<%@ page contentType="text/html;charset=gb2312"%>
<jsp:useBean id="myUpload" scope="page" class="com.jspsmart.upload.SmartUpload" />
<%
//getResource
myUpload.initialize(pageContext);
myUpload.upload();

//<!--Transaction-->
//假定上传到c:/upload
uploadpath = "c://upload";
java.io.File dir = new  java.io.File(uploadpath);
if(!dir.exists()){
dir.mkdirs();
}

com.jspsmart.upload.Files files = null;
com.jspsmart.upload.File file = null;
//count为上传的文件个数
int count = myUpload.save(uploadpath);
%>


这是显示附件的页面,在附件的链接上点击右键后点击“另存为”可以保存到机器上,直接点击会打开附件。

<%@ page contentType="text/html;charset=gb2312" %>
<%
<table>
<tr>
<td align="right" width="27%"><font color=blue>附件:</font></td>
<td width="73%">
<%
//att_name为你上传了的文件的文件名
String att_name="世界文件.doc";
if(att_name!=null){
out.println("<a href=/"listAttachment.jsp?filename="+att_name+"/" target=/"_blank/">"+att_name+"</a>");
}
%>
</td>
</tr>
</table>
</body>
</html>


这是显示附件内容的页面,很好地解决了中文问题,不妨一试,文件上传用的是com.jspsmart.upload.SmartUpload包,网上有下的。

<%@ page language="java" import="com.jspsmart.upload.*,cn.com.ahead.Util.*"%><jsp:useBean id="myUpload" scope="page" class="com.jspsmart.upload.SmartUpload" /><%
String filename=request.getParameter("filename");
filename=new String(filename.getBytes("iso8859-1"),"gb2312");
myUpload.initialize(pageContext);
myUpload.downloadFile("c://upload//"+java.net.URLEncoder.encode(filename),"application/ahead",new String(filename.getBytes("gb2312"),"iso8859-1"));
%>


注意:此页面上<%@....%><jsp:userBean..../><%....%>之间不能有任何空格,要不然下载到机器上的文件会多出几个回车换行符,格式会不对。
16.Re:一个中文名文件下载不了的问题!!! [Re: adelejxsx]Copy to clipboard
Posted by: lixj0571
Posted on: 2003-05-26 13:07

问题二:
还是跟上面有关,上面那个doc文件是用JspSmartUpload来实现附件上载,上载的时候存储到服务器上时文件名已经经过了转码:(存放在c:/upload目录下)
java.net.URLEncoder.encode(fileName),换成了像下面这种形式的文件名:
%3D%2A%1A%3B%2B%3C%1D%1A.doc,然后用一个链接指向她,
<a href="c:/upload/%3D%2A%1A%3B%2B%3C%1D%1A.doc">我的文件.doc</a>,运行的时候,点这个链接时会弹出一个对话框,提示你“保存”或者“打开“,选择”保存“,这时候出现的保存文件名就是:%3D%2A%1A%3B%2B%3C%1D%1A.doc,我想保存对话框的文件名是原来的文件名,如"我的文件.doc",我该怎么办,有谁能帮我。。。。
第二个问题更重要。。。。

java.net.URLDecoder.decode(filename)解码
17.Re:一个中文名文件下载不了的问题!!! [Re: adelejxsx]Copy to clipboard
Posted by: adelejxsx
Posted on: 2003-05-26 13:18

我上面已经解决了这个问题,你只要想办法把你上传的文件名传到显示附件的那个页面,也就是上面倒数第二个页面上就可以了,你可以在上传的时候把上传的文件名保存到数据库中或者是保存到Session里都可以。你试试。
18.Re:一个中文名文件下载不了的问题!!! [Re: rainman]Copy to clipboard
Posted by: bless
Posted on: 2003-05-26 16:21

谢谢adelejxsx 的帮助,真的是非常的感谢!
19.Re:一个中文名文件下载不了的问题!!! [Re: adelejxsx]Copy to clipboard
Posted by: bless
Posted on: 2003-05-26 18:01

adelejxsx,又得向你求教了
现在问题是这样的:
显示一个英文名的照片没有问题,但就是显示不了中文名的相片,不知道如何解决,还请你指点迷津!再次向你表示谢意。
20.Re:一个中文名文件下载不了的问题!!! [Re: adelejxsx]Copy to clipboard
Posted by: zenxin0103
Posted on: 2003-05-26 22:20

麻烦那位给SmartUpload原代码发给我,谢谢。

Email :zenxin0103@163.net
21.Re:一个中文名文件下载不了的问题!!! [Re: zenxin0103]Copy to clipboard
Posted by: why
Posted on: 2003-05-26 22:32

zenxin0103 wrote:
麻烦那位给SmartUpload原代码发给我,谢谢。
有人有SmartUpload的原代码嗎?
http://www.jspsmart.com/ 上的free download只有classes
22.Re:一个中文名文件下载不了的问题!!! [Re: adelejxsx]Copy to clipboard
Posted by: adelejxsx
Posted on: 2003-05-27 08:35

可以把他的类反编译一下,不过,可能没有原版的代码好。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: