- 浏览: 439405 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (192)
- spring (4)
- jFreeChart (1)
- oracle (3)
- tomcat (1)
- mysql (2)
- jbpm (2)
- jQuery (4)
- 财经 (3)
- php (1)
- linux (1)
- ExtJs (2)
- android (92)
- 生活 (5)
- Json (2)
- html (4)
- java (24)
- other (16)
- struts 2 (3)
- hibernate (3)
- Lucene (2)
- Thread (1)
- javaScript (2)
- weblogic (1)
- T-SQL (3)
- Ant (1)
- memcached (6)
- apache (1)
- android 事件处理 (0)
- git (1)
- 设计模式 (1)
最新评论
-
feng_tai_jun:
...
weblogic.xml 部署描述符元素 -
hnraysir:
赞,必须要顶顶顶!
Android中的Surface和SurfaceView -
hety163:
如果你设置的是一个viewgroup的ontouch,想判断不 ...
一个view如何同时响应onTouch和onClick事件 -
yue_670176656:
[flash=200,200][/flash][img][ur ...
九宫格手势密码案例 -
asdf_2012:
必须顶,好文章。简洁
Android中的Surface和SurfaceView
public class DownFile extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
resp.setContentType("text/html;charset=utf-8");
resp.setCharacterEncoding("utf-8");
resp.reset();
long pos = 0;
String fileLocation = req.getParameter("fileName");
System.out.println("The file is:" + fileLocation);
String subFileName = fileLocation.substring(fileLocation.lastIndexOf("/")+1,fileLocation.length());
String fileName = new String(subFileName.getBytes("iso-8859-1"),"utf-8");
OutputStream os = null;
FileInputStream is = null;
try {
File f = new File(req.getSession().getServletContext().getRealPath("/resource/temp/down") +"/"+fileName);
is = new FileInputStream(f);
long fSize = f.length();
byte xx[] = new byte[4096];
resp.setHeader("Accept-Ranges", "bytes");
resp.setHeader("Content-Length", fSize + "");
//对名字进行编码,这一步很重要
String encoderName = URLEncoder.encode(fileName, "UTF-8");
//filename下载时显示的文件名
resp.setHeader("Content-Disposition", "attachment;filename="+encoderName);
if (req.getHeader("Range") != null) {
// 若客户端传来Range,说明之前下载了一部分,设置206状态(SC_PARTIAL_CONTENT)
resp.setStatus(HttpServletResponse.SC_PARTIAL_CONTENT);
pos = Long.parseLong(req.getHeader("Range").replaceAll("bytes=", "").replaceAll("-", ""));
}
if (pos != 0) {
String contentRange = new StringBuffer("bytes ")
.append(new Long(pos).toString()).append("-")
.append(new Long(fSize - 1).toString()).append("/")
.append(new Long(fSize).toString()).toString();
resp.setHeader("Content-Range", contentRange);
System.out.println("Content-Range=" + contentRange);
// 略过已经传输过的字节
is.skip(pos);
}
os = resp.getOutputStream();
boolean all = false;
while (!all) {
int n = is.read(xx);
if (n != -1) {
os.write(xx, 0, n);
} else {
all = true;
}
}
} catch (IOException e) {
e.printStackTrace();
return;
} finally {
if (is != null)
is.close();
if (os != null)
os.close();
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
}
----------------------------------------------------------------------------------------------
jsp页面
<a href="<%=path %>/downFile?fileName=${content.filePath}">下载</a>
以下方法也可使用
在服务器端把文件转换成输出流,写入到response,以response把文件带到浏览器,由浏览器来提示用户是否愿意保存文件到本地
--------------------------
第一种:
下载页面
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<html>
<head>
<title>download</title>
</head>
<body>
<a href="xia.jsp?filename=新建文档.txt">新建文档.txt</a>
</body>
</html>
然后编写如下页面
<%@ page contentType="text/html;charset=gbk"%>
<%@ page language="java" import="java.io.*,java.net.*" pageEncoding="gbk"%>
<html>
<head>
<title>test</title>
</head>
<body>
<%
response.setContentType("text/html");
javax.servlet.ServletOutputStream ou = response.getOutputStream();
String filepath="uploadfile/";
String filename=new String(request.getParameter("filename").getBytes("ISO8859_1"),"GB2312").toString();
System.out.println("DownloadFile filepath:" + filepath);
System.out.println("DownloadFile filename:" + filename);
java.io.File file = new java.io.File(filepath + filename);
if (!file.exists()) {
System.out.println(file.getAbsolutePath() + " 文件不存在!");
return;
}
// 读取文件流
java.io.FileInputStream fileInputStream = new java.io.FileInputStream(file);
// 下载文件
// 设置响应头和下载保存的文件名
if (filename != null && filename.length() > 0) {
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition", "attachment; filename=" + new String(filename.getBytes("gb2312"),"iso8859-1") + "");
if (fileInputStream != null) {
int filelen = fileInputStream.available();
//文件太大时内存不能一次读出,要循环
byte a[] = new byte[filelen];
fileInputStream.read(a);
ou.write(a);
}
fileInputStream.close();
ou.close();
}
%>
</body>
</html>
第二种方法
使用servlet 首先配置web.xml
<servlet>
<servlet-name>DownloadFile</servlet-name>
<servlet-class>com.servlet.DownloadFile</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DownloadFile</servlet-name>
<url-pattern>/downloadfile</url-pattern>
</servlet-mapping>
编写DownloadFile.java类
package libin123.com.cn.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.sun.image.codec.jpeg.ImageFormatException;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageDecoder;
public class DownloadFile extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
javax.servlet.ServletOutputStream out = response.getOutputStream();
//得到下载的路径
String filepath=request.getRealPath("/") + "uploadfile/";
String filename=new String(request.getParameter("filename").getBytes("ISO8859_1"),"GB2312").toString();
System.out.println("DownloadFile filepath:" + filepath);
System.out.println("DownloadFile filename:" + filename);
java.io.File file = new java.io.File(filepath + filename);
if (!file.exists()) {
System.out.println(file.getAbsolutePath() + " 文件不存在!");
return;
}
// 读取文件流
java.io.FileInputStream fileInputStream = new java.io.FileInputStream(file);
// 下载文件
// 设置响应头和下载保存的文件名
if (filename != null && filename.length() > 0) {
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition", "attachment; filename=" + new String(filename.getBytes("gb2312"),"iso8859-1") + "");
if (fileInputStream != null) {
int filelen = fileInputStream.available();
//文件太大时内存不能一次读出,要循环
byte a[] = new byte[filelen];
fileInputStream.read(a);
out.write(a);
}
fileInputStream.close();
out.close();
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN>");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
out.print(" This is ");
out.print(this.getClass().getName());
out.println(", using the POST method");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
}
下载页面
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<html>
<head>
</head>
<body>
<a href="downloadfile?filename=新建文档.txt">新建文档.txt</a>
</body>
</html>
发表评论
-
Java中文件与字节数组转换
2015-01-09 14:19 6125Java文件与字节数组转换 /** * 返回一 ... -
Eclipse中的快速Java代码模板使用 java editor template
2014-10-31 11:11 4947java editor template Eclipse ... -
java回调函数
2014-06-29 14:55 1094java回调函数 所谓回调,就是客户程序C调用 ... -
java中double型数据四舍五入
2014-03-14 19:38 1272java中double型数据四舍五入 /** * ... -
Java线程池介绍以及简单示例
2014-01-23 17:34 1054Java线程池介绍以及简 ... -
eclipse中jar包关联源代码与取消关联
2014-01-13 11:55 2639在eclipse中查看Android源代码 当我们 ... -
Java解读NIO Socket非阻塞模式
2013-11-01 13:48 860Java解读NIO Socket非阻塞模式 Jav ... -
设计模式之java接口和java抽象类
2013-10-09 09:05 1242java接口和java抽象类 java不允许多重 ... -
Java学习之路:不走弯路,就是捷径
2013-04-13 18:37 947Java学习之路:不走弯路,就是捷径 1.如何学习 ... -
java.util.concurrent.ExecutorService与Executors例子的简单剖析
2013-03-25 15:11 1812java.util.concurrent.ExecutorS ... -
Socket
2012-12-23 17:30 1046Socket 定义: 两个java应用程序可通过一个 ... -
jdom读取xml文件
2012-08-19 19:53 1198用JDOM读取XML文件需先 ... -
java 获取HTTP 头部信息
2012-07-21 19:16 2286java 获取HTTP 头部信息 public c ... -
远程下载、图片压缩到指定大小、FTP的上传、文件的删除 /copy
2012-06-12 11:45 2059package com.cmmb.mall.serv ... -
java读取properties配置文件
2012-06-12 11:25 1163public static void main(Stri ... -
java实现FTP断点续传
2012-04-13 09:05 2532import java.io.File; i ... -
java 读取文件
2012-04-12 20:39 1038读取:将磁盘文件数据 ... -
java操作Excel文件
2012-04-06 11:56 1170JAVA EXCEL API 简介 Java Exce ... -
java 调用视频转换工具ffmpeg
2012-03-28 20:41 1694import java.io.File; impor ... -
JAVA对存储过程的调用方法
2012-03-01 11:55 4049一:Java如何实现对存 ...
相关推荐
1. **安装插件**:首先,需要在浏览器的扩展商店中找到并安装支持"网页加强另存为"功能的插件,比如"Webpage Screenshot"或"Save Page WE"等。 2. **配置设置**:安装完成后,用户可以根据自己的需求调整插件的保存...
在VC++环境中,对BMP图像文件进行读写和另存为操作是常见的图像处理任务。BMP(Bitmap)是一种未经压缩的图像文件格式,它存储了图像的颜色信息和像素数据。下面将详细介绍如何在VC++中进行这些操作。 首先,我们...
vba 中代码实现另存为,支持2007及2003格式
当我们需要离线查看网页或保存网页内容时,可以使用浏览器的“另存为”功能,将网页保存为HTML文件。这个过程涉及网络请求、HTML解析和本地存储。首先,浏览器发送HTTP请求到百度服务器获取网页内容;接着,接收到...
本篇文章将详细探讨如何使用C#对Excel文件进行读取、显示以及另存为新的文件,主要聚焦于Microsoft Office Interop库和开源库如EPPlus的使用。 首先,让我们了解如何使用Microsoft Office Interop库读取Excel文件。...
5. **批注和注释**:PDF文件支持添加批注和高亮,便于审阅和协作。 安装该插件时,需要注意以下几点: 1. **系统要求**:确保你的电脑操作系统和Office 2007版本都满足插件的最低要求。 2. **安全检查**:下载插件...
在本篇文章中,我们将深入探讨如何使用C#来读取PDF文件并将其内容另存为TXT文件。 首先,要实现这个功能,我们需要一个能够处理PDF文件的库。Adobe提供了一个名为PDF iFilter的组件,可以用于索引和提取PDF内容,但...
在探讨如何在JavaScript中触发保存或另存为对话框的问题时,我们首先需要理解,由于浏览器的安全限制,直接从客户端脚本(如JavaScript)中触发一个保存或另存为的对话框是受到严格限制的。然而,有几种方法可以绕过...
以上就是使用JavaScript将Base64编码的图片另存为下载的基本流程。在实际应用中,还需要考虑跨域问题,因为某些浏览器不允许跨域的Base64编码图片直接下载。此外,现代浏览器支持File API和Blob API,但老版本的...
在Word中使用此插件,用户可以在文件菜单中找到“另存为”选项,然后选择“PDF”或“XPS”(另一种固定的电子文档格式)。点击后,Word会自动处理文档的转换,并保存为PDF文件。转换过程中,用户可以选择是否保留...
对于不支持JavaScript的浏览器或禁用了JavaScript的用户,可以使用`noscript`标签插入替代内容,通常是一个解释为什么页面看起来不正常的信息。例如: ```html 您的浏览器不支持JavaScript或已被禁用,部分功能...
本篇文章将深入探讨如何使用易语言来实现Excel文件另存为CSV格式的过程。 首先,我们需要理解Excel文件和CSV文件的区别。Excel文件(.xlsx)是Microsoft Office套件中的电子表格应用,支持丰富的公式、图表和格式化...
使用indexedDB实现的一个H5下载js插件,支持大文件在浏览器页面内下载,有断点续传的下载能力,适合需要下载大文件,并且有很强的权限控制,不希望下载地址外泄的情况。 有下载的人反馈说没有分析,其实是有的,在...
3. **模拟“另存为”操作**:这一步比较复杂,因为没有直接的API支持。你可以尝试模拟键盘事件(如`Ctrl+S`)来触发保存,但不同浏览器和系统可能有不同的效果。一个更可行的方案是使用JavaScript执行保存操作,这...
用户可以在文件菜单中选择“另存为”,然后在下拉列表中选择“PDF”或“XPS”(XML Paper Specification)。这使得用户无需借助第三方工具就能直接将Word文档转换为PDF格式。 3. **保存过程**:在选择“另存为PDF”...
在Microsoft Office Word 2007中,将文档另存为PDF(Portable Document Format)文件是一种常见的需求,因为PDF格式能保持文档的原始布局和样式,适用于跨平台分享和打印。虽然Word 2007默认并不直接支持PDF导出,但...
总的来说,"Office2007另存为PDF(支持EXCEL、PPT)"的功能大大提升了Office 2007用户的生产力,使得他们能够更方便地与其他使用不同软件或设备的人员共享和交流文档。这一功能的引入,标志着微软在办公软件领域的一...
本软件工具专注于将 DICOM 文件批量转换为 BMP、JPG 和 PNG 这三种常见的图像格式,同时提供了多选、拖放以及处理目录(包括子目录)的功能,极大地提升了工作效率。 1. DICOM 文件:DICOM 是医学成像设备如CT、MRI...
在使用Microsoft Project时,有时用户可能会遇到一个常见问题:无法将项目计划另存为PDF格式。这通常是由于系统缺少合适的打印机驱动或者系统设置不正确所导致的。在本文中,我们将详细探讨这个问题,并提供一种解决...
"SaveAsPDFandXPS Office另存为PDF插件"是一款专为Microsoft Office 2007设计的扩展工具,其主要功能是使用户能够直接在Office程序中将文档保存为PDF(Portable Document Format)或XPS(XML Paper Specification)...