0 0

中文名称的图片在IE系列浏览器中另存为文件名被截取15

只在IE浏览器出现,且只是右键另存为才有问题。左键直接下载,CTRL+C,CTRL+V。甚至在IE缓存文件夹中都是正确的。

JSP

  <td align="center" valign="middle" >
                <a href="<%=abspath%><s:property value='attachPath(filepath,filename,realfilename)'/>" target="_blank" title="<s:property value='realfilename'/>">
				 <img src="<%=abspath%><s:property value='attachPath(filepath,"/s_"+filename,realfilename)'/>" width="30" height="30" border="0" /> </a></td>

 attachPath

	public String attachPath(String filepath,String filename,String realname){
		String url ="fileupload!newAttachDownload.action?tid=";
		//boolean isFileRead = false;
		if(filepath!=null && !filepath.equals("")&& filename!=null && !filename.equals("")){
			String html = getSessionUser().getId() +","+ filepath + "," + filename+","+realname;
			 return url+fish.encryptString(html);
		}else{
			return "";
		}	
	}

 newAttachDownload

public String newAttachDownload(){
		if(tid!=null&&!"".equals(tid)){
			String html = fish.decryptString(tid);
			if(html == null){return "document_error";}
			String [] arr = html.split(",");
			if(arr!=null && arr.length >= 3){
				if(!arr[0].equals(getSessionUser().getId().toString())){return "document_error";}
				if(arr.length==4){
					fileName = arr[3];
				} else if(arr.length==3){
					fileName = arr[2];
				} else if(arr.length>=5) {
					fileName = "";
					for(int i=3; i<arr.length; i++) {
						fileName += arr[i];
						if(i+1 < arr.length) {
							fileName += ",";
						}
					}
				}
				if (null != fileName && (!"".equals(fileName))) {
					try {
						//Chinese code into UTF-8
						//fileName = new String(fileName.getBytes("GBK"), "ISO-8859-1");
						String agent =  ServletActionContext.getRequest().getHeader("USER-AGENT");
				        if (null != agent){   
				            if (-1 != agent.indexOf("Firefox")) {//Firefox   
				            	fileName = "=?UTF-8?B?" + (new String(org.apache.commons.codec.binary.Base64.encodeBase64(fileName.getBytes("UTF-8"))))+ "?=";
				            }else if (-1 != agent.indexOf("Chrome")) {//Chrome   
				            	fileName = new String(fileName.getBytes(), "ISO8859-1");
				            } else {//IE7+   
				            	fileName = java.net.URLEncoder.encode(fileName, "UTF-8"); 
				            	fileName = fileName.replaceAll("\\+", "%20");
				            	fileName = fileName.replaceAll(java.net.URLEncoder.encode(":"), ":");
				            	fileName = fileName.replaceAll(java.net.URLEncoder.encode("/"), "/");
				            	ServletActionContext.getResponse().setHeader( "Content-Disposition", "attachment;filename="  + fileName);
				            }   
				        }
					} catch (UnsupportedEncodingException e) {
						this.addActionMessage("String turn yards errors.Chinese code");
//						e.printStackTrace();
						log.error("Bad encoding on "+fileName, e);
						return "document_error";
					} 
				}
				
//				File input = new File(WEB_PATH+""+arr[1]+"/"+arr[2]);
				File input = new File(FILE_UPLOAD_PATH+""+arr[1]+"/"+arr[2]);
				System.out.println(input);
				if(input.canRead()){
					try {
						fileStream = new FileInputStream(input);
					} catch (FileNotFoundException e) {
						e.printStackTrace();
					}
					return "file_download";
				}else{
					this.addActionMessage("Download the file failed, the file has been deleted or does not exist!");
					return "document_error";
				}
			}else{
				return "document_error";
			}
		}else{
			return "document_error";
		}
	}

 

            <result name="file_download" type="stream">
				<param name="inputName">fileStream</param>
				<param name="contentType">
				    ${contentType}
				</param>
				<param name="contentDisposition">
					attachment;filename="${fileName}"
				</param>
				<param name="bufferSize">2048</param>
			</result>

 


问题补充:之前,关于图片的文件名都是英文+数字。最近增强了这部分,就是UPLOAD的时候的文件名,Download的时候也要是原本的文件名。所以就涉及了中文的问题。目前乱码问题没有了。可是在IE另存为的时候却一直有问题。
2013年5月24日 11:20
  • 大小: 44.6 KB

1个答案 按时间排序 按投票排序

0 0

这个有跟你一样的问题
http://eddysheng.iteye.com/blog/50414

2013年5月24日 11:34

相关推荐

    javaScript实现另存为功能

    在浏览器环境中,JavaScript可以极大地提升用户体验,包括模拟浏览器的一些原生功能,如“另存为”(Save As)功能。这个功能允许用户保存网页上的资源到本地计算机,例如HTML、图片、CSS或JavaScript文件。 在...

    解决浏览器请求响应中文文件名乱码问题的小工具包,解决中文文件名问题

    在IT行业中,尤其是在Web开发领域,处理中文文件名在浏览器请求响应中出现乱码的问题是一项常见的挑战。这个小工具包的出现,旨在提供一个解决方案,帮助开发者顺利地处理包含中文字符的文件名,确保在传输过程中...

    不同浏览器上中文文件名的下载乱码问题

    不同浏览器上中文文件名的下载乱码问题 浏览器IEChromeSafariOpera 浏览器能正确识别的编码格式

    Extjs下/HTML下的文件下载(另存为的弹出)

    5. **“另存为”对话框**:当`a`标签的`download`属性被设置时,浏览器会在用户点击后弹出“另存为”对话框,允许用户选择保存位置。 6. **HTML环境下的处理**:对于纯HTML环境,实现方式类似,只是没有Extjs提供的...

    纯HTML代码块导出Excel文件,用jquery库(兼容所有浏览器,支持设置文件名)

    在IT行业中,有时候我们需要在网页上提供用户导出数据到Excel的功能,这通常是后端处理的任务。然而,通过纯HTML和jQuery实现这个功能可以减轻服务器压力,并且在某些场景下非常实用。本教程将探讨如何利用jQuery库...

    在vfp编程中另存为对话框的程序如何写

    在Visual FoxPro (VFP) 编程环境中,创建一个"另存为"对话框是进行文件操作的一个常见需求,特别是在开发需要用户选择保存位置和文件名的应用程序时。下面我们将详细探讨如何利用VFP内置的`PUTFILE`命令来实现这一...

    IE9浏览器64bit

    这个文件名的含义是:IE9为产品名称,Windows7表示适用于Windows 7操作系统,x64代表64位版本,chs代表中文语言,最后的数字“1409560574”可能是该文件的特定版本号或生成时间戳。 在下载和安装64位IE9时,用户...

    图片文件图像中写上文件名

    标题"图片文件图像中写上文件名"和描述"将图片文件的文件名写在图像上,用于图片编号"指的是一个功能,它允许用户在图片内容上添加文字水印,显示图片的文件名,从而实现图片的可视化编号。这个过程通常涉及到图像...

    js base64编码格式图片另存为下载

    这个URL可以在浏览器中直接打开显示图片,也可以用于下载。 ```javascript let url = URL.createObjectURL(blob); ``` 3. **创建下载链接**:使用HTML5的`&lt;a&gt;`标签,设置其`href`属性为上一步生成的URL,并添加`...

    输出excel 文件 写明指定后缀文件的文件名和修改时间

    本人原创的,用于版本...从本机中选择一个文件夹,遍历该文件夹的子文件和子文件夹(以及下层结构),将指定后缀的文件的文件名、路径和最后修改日期以excel文件形式输出。 经多人验证可用,如下载后出现问题请留言。

    兼容IE8及以上浏览器版本的

    在2000年代末到2010年代初,IE8是广泛应用的浏览器,尽管现在已经被更现代的浏览器替代,但在一些企业环境中仍可能需要兼容它。兼容性是Web开发中的一个重要议题,因为不同的浏览器可能会有不同的渲染方式和API支持...

    完美解决CorelDraw9保存、另存、输出时不显示文件名称和文件类型

    CorelDraw9制图工具是系列中最稳定最好用的版本,所以很多设计师都一直没换版本,但在win10系统中保存、另存、输出时,文件浏览框会遮盖其他选项。输出对话框中不显示文件名称和文件类型栏目,导致这么好用的版本也...

    在word中另存为pdf的插件

    - **图像质量**:高分辨率的图片在转换后可能会降低质量,因此在转换前应调整图片大小和质量。 - **链接和超文本**:Word中的链接在转换为PDF后通常仍能保留,但链接的目标可能会发生变化,需要检查确认。 - **版面...

    Java实现文件下载并解决中文文件名乱码

    然而,在实际操作过程中可能会遇到一个常见问题:当文件名包含中文字符时,下载后的文件名可能出现乱码的情况。本文将详细介绍如何使用Java实现文件下载功能,并重点讲解如何解决中文文件名乱码的问题。 #### 一、...

    coreldraw9在win10下,另存为时,无法显示另存为文件名称及文件类型

    把drawintl.dll复制到Corledraw执行文件目录下替换原来文件及可

    windows系统 32位 IE7浏览器

    文件名 "IE7-WindowsXP-x86-chs.exe" 表明这是一款针对Windows XP操作系统的IE7安装程序,x86表示它是32位版本,chs代表“Chinese Simplified”(简体中文),意味着这个版本是为中国用户设计的,界面和文档都是中文...

    uEditor上传图片并保存为原文件名

    【标题】"uEditor上传图片并保存为原文件名"涉及的是在ASP.NET环境中使用uEditor编辑器进行图片上传,并确保图片文件以上传时的原始文件名存储的过程。uEditor是一个流行的富文本编辑器,广泛应用于网站内容管理系统...

    ASP.NET、SharePoint中另存文件的长文件名被截断的原因及解决办法

    这主要表现在文件名如果超过一定长度,在通过浏览器的【右键】-【另存为】功能下载时,文件名会被截断,只剩下前15个汉字或字符。这种情况不仅在SharePoint环境中出现,在***应用中也普遍存在。以下是关于这一现象的...

    IE.rar_IE_ie 浏览器_vb 浏览器_多 浏览器_浏览器

    标题中的"IE.rar_IE_ie 浏览器_vb 浏览器_多 浏览器_浏览器"表明这是一个关于基于VB(Visual Basic)编写的Internet Explorer(IE)浏览器的项目,其中可能包含了多个浏览器页面的功能。这个项目可能是为了学习、...

    java导出文件文件名处理

    - 基于WebKit内核的浏览器,如Chrome,支持使用`UTF-8`编码格式的文件名,并且文件名中的空格会被替换为`%20`。 - 示例代码: ```java response.setHeader("Content-Disposition", "attachment;filename=" + new...

Global site tag (gtag.js) - Google Analytics