jsp实现word文档的上传在线预览下载

合集下载

用JSP实现文件上传功能

用JSP实现文件上传功能

用JSP实现文件上传功能JSP(JavaServer Pages)是一种用于在服务器上生成动态网页的Java技术。

通过使用JSP,可以实现文件上传功能,使用户能够将文件上传到服务器。

一、前端页面设计:1.创建一个HTML表单,用于用户选择要上传的文件。

2. 指定表单的enctype属性为“multipart/form-data”,以支持文件上传。

3.添加一个提交按钮,用于触发文件上传的动作。

二、后端代码实现:1.在JSP页面上添加以下代码,用于接收和处理文件上传的请求:```jsp<%String uploadPath = "指定文件上传的目标路径"; // 指定文件上传的目标路径,例如:"/uploads/"DiskFileItemFactory factory = new DiskFileItemFactory(;ServletFileUpload upload = new ServletFileUpload(factory);tryList<FileItem> items = upload.parseRequest(request);for (FileItem item : items)if (!item.isFormField() { // 判断是否为上传文件String fileName = new File(item.getName().getName(;String filePath = uploadPath + File.separator + fileName;File storeFile = new File(filePath);item.write(storeFile); // 保存文件到服务器out.println("文件上传成功!");}}} catch (Exception e)out.println("文件上传失败!");e.printStackTrace(;%>```2. 创建一个文件夹用于存储上传的文件,例如在项目根目录下创建一个名为"uploads"的文件夹。

JSP文件操作(上传下载)

JSP文件操作(上传下载)

8.1.2
文件目录的操作
1.创建文件目录
其语法结构如下:
File File对象变量=new File("服务器 端的绝对路径"); File File对象变量.mkdir();

2.判断目录文件是否存在
首先建立File对象,再用File对象的 exists()方法来判断文件目录是否存在。 其语法结构如下: File File对象变量=new File("服务器 端的绝对路径"); File File对象变量.exists();

8.2 JSP应用中的文件操作
8.2.1

文件中逐个数据的读取
文件中数据是通过建立一个FileReader对象来进 行逐个读取的。其语法结构如下: FileReader FileReader对象变量=new FileReader(" 文件磁盘路径与文件名称"); 建立了FileReader对象之后,通过FileReader的 read()方法来读取文件中的字符,如读取文件中的某 个字符、几个字符或者全部字符。如果文件没有字 符存在或读到文件的末尾时,这时read()方法返回的 值为−1。
起始位置,写入的字符数); (4)FileWriter对象变量.write(字符串);
8.2.4
分行数据写入
数据分行写入文件的newLine()方法语法结构
如下: BufferedWriter 对象变量.newLine(); Write()方法语法机构也有以下几种: (1)BufferedWriter对象变量.write(字符); (2)BufferedWriter对象变量.write(字符数 组); (3)BufferedWriter对象变量.write(字符数 组,起始位置,写入的字符数);

jspWeb实现文件上传下载功能实例解析

jspWeb实现文件上传下载功能实例解析

jspWeb实现⽂件上传下载功能实例解析这⾥只写后端的代码,基本的思想就是,前端将⽂件分⽚,然后每次访问上传接⼝的时候,向后端传⼊参数:当前为第⼏块⽂件,和分⽚总数下⾯直接贴代码吧,⼀些难懂的我⼤部分都加上注释了:上传⽂件实体类:看得出来,实体类中已经有很多我们需要的功能了,还有实⽤的属性。

如MD5秒传的信息。

public class FileInf {public FileInf(){}public String id="";public String pid="";public String pidRoot="";/** * 表⽰当前项是否是⼀个⽂件夹项。

*/public boolean fdTask=false;// /// 是否是⽂件夹中的⼦⽂件 /// </summary>public boolean fdChild=false;/** * ⽤户ID。

与第三⽅系统整合使⽤。

*/public int uid=0;/** * ⽂件在本地电脑中的名称 */public String nameLoc="";/** * ⽂件在服务器中的名称。

*/public String nameSvr="";/** * ⽂件在本地电脑中的完整路径。

⽰例:D:\Soft\QQ2012.exe */public String pathLoc="";/** * ⽂件在服务器中的完整路径。

⽰例:F:\\ftp\\uer\\md5.exe */public String pathSvr="";/** * ⽂件在服务器中的相对路径。

⽰例:/www/web/upload/md5.exe */public String pathRel="";/** * ⽂件MD5 */public String md5="";/** * 数字化的⽂件长度。

用Jsp来实现文件下载功能的几种方式

用Jsp来实现文件下载功能的几种方式

1.最直接最简单的,方式是把文件地址直接放到html页面的一个链接中。

这样做的缺点是把文件在服务器上的路径暴露了,并且还无法对文件下载进行其它的控制(如权限)。

这个就不写示例了。

2.在服务器端把文件转换成输出流,写入到response,以response把文件带到浏览器,由浏览器来提示用户是否愿意保存文件到本地。

(示例如下)
3.既然是JSP的话,还有一种方式就是用Applet来实现文件的下载。

不过客户首先得信任你的这个Applet小程序,由这个程序来接受由servlet发送来的数据流,并写入到本地。

servlet端示例
JApplet端示例
4.顺便把JApplet上传文件的代码也贴上来. JApplet端示例
servlet端代码示例
总结:在文件的传输中是流的形式存在的,在硬盘上是文件的形式存在的。

我们要做的只是通过HttpServletRequest和HttpServletResponse,或者是response和request来发送流和读取流。

以及把文件转换成流或把流转换成文件的操作。

jsp之文件上传和下载

jsp之文件上传和下载

很多初学jsp的同志都在实现文件上传到服务器或者从服务器上下载文件到本地计算机这方面不是很了解,今天在这里我会帮助大家慢慢的实现这一功能。

准备工作:1.到网上下载两个包第一个叫做commons-fileupload-1.2.1.jar第二个叫做commons-io-1.3.2.jar2. 建一个项目用来实现文件上传和下载我创建的Web项目名为fileUpload,截图如下3.我们把从网上下载下来的包copy到WebRoot目录下Web-INF下的子目录lib目录里然后打开Referenced Libraries,你会看见两个包已经存在于里面了。

下面我们开始实现文件上传1. 首先我们创建一个名为uploadFile.jsp的页面,如下图:点击浏览,可以出现以下画面源代码如下:<%@page language="java"import="java.util.*"pageEncoding="UTF-8"%> <%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+ ":" +request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><base href="<%=basePath%>"><title>实现文件上传到服务器</title><meta http-equiv="pragma"content="no-cache"><meta http-equiv="cache-control"content="no-cache"><meta http-equiv="expires"content="0"><meta http-equiv="keywords"content="keyword1,keyword2,keyword3"> <meta http-equiv="description"content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><form action="doFileUpload.jsp"method="post"enctype="multipart/form-data">文件:<input type="file"name="chooseFile"/></br>姓名:<input type="text"name="userName"/></br><input type="submit"value="提交"></form></body></html>注意:form表单里的enctype=”multipart/form-data”这一属性一定要写,这是用来标明此表单的类型是文件类型的。

jsp实现文件的上传下载

jsp实现文件的上传下载

jsp文件上传下载2009-04-14 14:06jsp实现文件上传下载功能jspsmartupload是由网站开发的一个可免费使用的全功能的文件上传下载组件,适于嵌入执行上传下载操作的jsp文件中。

该组件有以下几个特点:1、使用简单。

在jsp文件中仅仅书写三五行java代码就可以搞定文件的上传或下载,方便。

2、能全程控制上传。

利用jspsmartupload组件提供的对象及其操作方法,可以获得全部上传文件的信息(包括文件名,大小,类型,扩展名,文件数据等),方便存取。

3、能对上传的文件在大小、类型等方面做出限制。

如此可以滤掉不符合要求的文件。

4、下载灵活。

仅写两行代码,就能把web服务器变成文件服务器。

不管文件在web服务器的目录下或在其它任何目录下,都可以利用jspsmartupload进行下载。

5、能将文件上传到数据库中,也能将数据库中的数据下载下来。

这种功能针对的是mysql数据库,因为不具有通用性,所以本文不准备举例介绍这种用法。

jspsmartupload组件可以从网站上自由下载,压缩包的名字是jspsmartupload.zip。

下载后,用winzip或winrar将其解压到tomcat 的webapps目录下(本文以tomcat服务器为例进行介绍)。

解压后,将webapps/jspsmartupload目录下的子目录web-inf名字改为全大写的web-inf,这样一改jspsmartupload类才能使用。

因为tomcat对文件名大小写敏感,它要求web应用程序相关的类所在目录为web-inf,且必须是大写。

接着重新启动tomcat,这样就可以在jsp文件中使用jspsmartupload组件了。

注意,按上述方法安装后,只有webapps/jspsmartupload目录下的程序可以使用jspsmartupload组件,如果想让tomcat服务器的所有web应用程序都能用它,必须做如下工作:1.进入命令行状态,将目录切换到tomcat的webapps/jspsmartupload/web-inf 目录下。

jsp实现文件上传和下载

jsp实现文件上传和下载

1 JSP文件上传简单实例1、index.html代码:<html><head><title>上传图片</title></head><body><form action="do_upload.jsp" method="post" enctype="multipart/form-data"><input type="file" name="Photo"><input type="submit" value="上传"></form></body></html>2、使用到的函数和类说明File类文件和目录路径名的抽象表示形式,File(parent,child)方法根据parent 抽象路径名和child 路径名字符串创建一个新File实例FileOutputStream文件输出流,InputStream输入流,将输入数据看成一根管道,可以形象的将输入流比喻成管道的入口,而输出流比喻成管道的出口。

read(byte[] b) 从此输入流中将最多 b.length 个字节的数据读入一个字节数组中。

read() 从此输入流中读取一个数据字节。

write(int b) 将指定字节写入此文件输出流,write(byte[] b, int off, int len) 将指定字节数组中从偏移量off 开始的len 个字节写入此文件输出流。

write(byte[] b) 将 b.length 个字节从指定字节数组写入此文件输出流中Random.readLine()逐行读入,Random.seek(int pos)设置到此文件开头测量到的文件指针偏移量,该位置发生下一个读取和写入操作,Random.getFilePointer()返回此文件当前偏移量,Random.readByte()此方法从该文件的当前文件指针开始读取第一个字节。

JavaScript实现Word、Excel、PPT在线预览

JavaScript实现Word、Excel、PPT在线预览

JavaScript实现Word、Excel、PPT在线预览能够实现在线预览,但Word、Excel、PPT⽂档⽤同样的⽅式打开则是默认下载。

微软office online提供了接⼝来实现Word、Excel、PPT⽂档在线预览:/*** @description [viewFile 查看⽂件]* @author ZouMiao* @param {String} url [⽂件地址]* @returns {Null} [没有返回]*/export const viewFile = function (url) {let onlineViewType = ['doc', 'docx', 'xls', 'xlsx', 'xlsm', 'ppt', 'pptx']let fileTypeName = url.substring(stIndexOf('.') + 1, url.length).split('?')[0]let isWord = onlineViewType.find((type) => type === fileTypeName)if (isWord) {url = '/op/view.aspx?src=' + url}window.open(url, '_blank')}在项⽬中使⽤在线预览有时报File too large,The file specified is larger than what the Office Online Viewers are configured to support.Reduce the size of the file to view it online.File too large Error: The file specified is larger than what the Office Online Viewers are configured to support. Reduce the size of the file to view it online.Office Online产品团队的Ryan回复The document is too large. Word and PowerPoint documents must be less than 10 megabytes; Excel must be less than five megabytes. 所以使⽤Office Online必须注意Word、PPT⽂件不能⼤于10M,Excel⽂件不能⼤于5M。

WEB基础JSP文件上传下载

WEB基础JSP文件上传下载

JSP文件上传下载
文件下载两种方式:
超链接直接指向下载资源。 程序实现下载需设置两个响应头。 • 为设置Content-Type 的值为:application/x-msdownload。Web 服 务器需要告诉浏览器其所输出的内容的类型不是普通的文本文件或
HTML 文件,而是一个要保存到本地的下载文件。
java培训专家
JSP文件上传下载
上传文件的处理细节
ProgressListener显示上传进度:
ServletFileUpload.setProgressListener( new ProgressListener() {
public void update(long pBytesRead, long
java培训专家
JSP文件上传下载
FileUpload组件实现文件上传下载:
主要的类: FileItem 操作类
主要方法:
isFieldForm():判断是否为普通表单的提交
getFiledName():获取表单的名字
普通表单: getString()/getString("gbk"):获取表单信息 文件:
文件上传实现步骤:
创建DiskFileItemFactory对象,设置缓冲区大小和临时文件目录。 使用DiskFileItemFactory 对象创建ServletFileUpload对象,并设置上传文 件的大小限制。 调用ServletFileUpload.parseRequest方法解析request对象,得到一个保 存了所有上传内容的List对象。 对list进行迭代,每迭代一个FileItem对象,调用其isFormField方法判断是 否是上传文件。 • 为普通表单字段,则调用getFieldName、getString方法得到字段名和 字段值。 • 为上传文件,则调用getInputStream方法得到数据输入流,从而读取上

Jsp页面实现文件上传下载

Jsp页面实现文件上传下载

Jsp页面实现文件上传下载第1 页jsp页面实现文件上传代码开发的过程见用TOMCAT作简单的jsp web开发名称:jsp页面上传类作者:SinNeRMail:vogoals[at]特点:1可以多文件上传;2返回上传后的文件名;3form表单中的其他参数也可以得到。

先贴上传类,JspFileUploadpackage com.vogoal.util;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.Hashtable;import javax.servlet.ServletInputStream;import javax.servlet.http.HttpServletRequest;/** vogoalAPI 1.0*************************** by *mail:********************//*** JSP上传文件类** @author SinNeR* @version 1.0*/public class JspFileUpload {/** request对象*/private HttpServletRequest request = null;/** 上传文件的路径*/private String uploadPath = null;/** 每次读取得字节的大小*/private static int BUFSIZE = 1024 * 8;/** 存储参数的Hashtable */private Hashtable paramHt = new Hasptable();/** 存储上传的文件的文件名的ArrayList */private ArrayList updFileArr = new ArrayList();/*** 设定request对象。

JSP文件上传与下载

JSP文件上传与下载

文件的上传和下载都是Web应用程序中很常见的功能,比如在论坛中用户可以上传自己的喜欢的头像,邮件系统中用户可以上传附件,到网站上去下载自己喜欢的资源等等。

文件的上传也是基于表单来完成的,表单中的file元素可以自动生成一个文本框和一个按钮,文本框可以输入本地文件名或路径,点击按钮则可以打开一个文件选择框让用户选中本地文件。

需要注意的是在文件上传时还必须设置表单的enctype属性,并将它的值设置为multipart/form-data。

upload.jsp<%@ page language="java" pageEncoding="UTF-8"%><%@ taglib prefix="c" uri="/jsp/jstl/core" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>文件上传</title></head><body><c:if test="${param.code eq '001'}"><div style="color:red">上传成功!</div></c:if><c:if test="${param.code eq '002'}"><div style="color:red">上传失败!</div></c:if><form action="uploadServlet" method="post" enctype="multipart/form-data"> 照片描述:<input type="text" name="desc"/><br/><input type="file" name="file1"/><br/><input type="submit" value="提交"/></form></body></html>uploadServlet.javaimport java.io.File;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Iterator;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import mons.fileupload.FileItem;import mons.fileupload.FileUpload;import mons.fileupload.disk.DiskFileItemFactory;public class UploadServlet extends HttpServlet {private final String uploadPath = "C:/file/"; // 用于存放上传文件的目录private final String tempPath = "C:/tempFile"; // 用于存放临时文件的目录private final int flushSize = 1024 * 512; // 缓冲区大小private final long fileSize = 10 * 1024 * 1024; // 文件最大大小public void init() throws ServletException {File file = new File(uploadPath);if (!file.exists()) {file.mkdir();}file = new File(tempPath);if (!file.exists()) {file.mkdir();}}public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 判断from表单的enctype属性值是否设置为multipart/form-databoolean isMultipart = FileUpload.isMultipartContent(request);if (!isMultipart) {return;}try {DiskFileItemFactory factory = new DiskFileItemFactory();// 设置缓冲区大小factory.setSizeThreshold(flushSize);factory.setRepository(new File(tempPath));// 创建FileUpload对象FileUpload upload = new FileUpload(factory);// 设置文件最大大小upload.setSizeMax(fileSize);List items = upload.parseRequest(request);Iterator iter = items.iterator();while (iter.hasNext()) {FileItem item = (FileItem) iter.next();// 判断是否是file表单元素if (!item.isFormField()) {String name = item.getName();//获得文件路径及名称name = name.substring(stIndexOf(File.separator) + 1,name.length());//获得文件名String fileType = name.substring(name.indexOf("."));//获得文件后缀名String filename = getFileName();//随机产生一个文件名防止文件名重复long size = item.getSize();//如果文件名不存在则不处理if ((name == null || name.equals("")) && size == 0) {continue;}item.write(new File(uploadPath + filename + fileType));} else {//获得文件描述String desc = item.getString("UTF-8");System.out.println(desc);}}response.sendRedirect("upload.jsp?code=001");} catch (Exception e) {e.printStackTrace();response.sendRedirect("upload.jsp?code=002");}}private String getFileName() {//根据时间产生文件名SimpleDateFormat df = new SimpleDateFormat("yyyyMMddhhmmssms");return df.format(new Date());}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}文件下载:通过超链接下载文件,会暴露了下载文件在服务器中的真实地址,不利于对资源进行安全保护,而且利用超链接下载文件,服务器端得文件只能存放在Web应用程序所在的目录下。

jsp实现下载excel,word,pdf,jgp,gif,xml,js过滤器实现文档

jsp实现下载excel,word,pdf,jgp,gif,xml,js过滤器实现文档

下面代码有选择的粘贴进自己项目即可,其实现解决了tomcat、resin服务器中文下载乱码问题。

web.xml配置如下<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_2_5.xsd"><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><filter><filter-name>downLoad</filter-name><filter-class>com.tangdi.DownLoadFilter</filter-class></filter><filter-mapping><filter-name>downLoad</filter-name><url-pattern>*.downLoad</url-pattern></filter-mapping></web-app>Jsp页面配置如下其下载利用a标签进行连接,前提是服务器上下载文件路径已知需要引进el表达式和jquery.<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><%@ taglib uri="/jsp/jstl/core" prefix="c"%><script src="${pageContext.request.contextPath}/js/jquery-1.4.4.min.js" type="text/javascript"></script><html><head><script>$(function(){var$href='${pageContext.request.contextPath}'+"/20159.downLoad?filePath=";//+encodeURICompo nent("中国.downLoad");$("#testHref").children("td").each(function(){var $id=$(this).children(":first").attr("id");var $tmpHref="";if($id=="txt"){$tmpHref=$href+"E:/apache-tomcat-6.0.35/apache-tomcat-6.0.35/webapps/MyTry/test/"+"203123 4_这是txt.txt";}else if($id=="pdf"){$tmpHref=$href+"E:/apache-tomcat-6.0.35/apache-tomcat-6.0.35/webapps/MyTry/test/"+"这是pdf.pdf";}else if($id=="excel"){$tmpHref=$href+"这是excel.xls";}else if($id=="word"){$tmpHref=encodeURI($href+"这是doc.doc","ISO8859-1");}else if($id=="jpg"){$tmpHref=$href+"这是jpg.jpg";}else if($id=="js"){$tmpHref=$href+"这是js.js";}else if($id=="jsp"){$tmpHref=$href+"这是jsp.jsp";}else if($id=="html"){$tmpHref=$href+"这是html.html";}$(this).children(":first").attr("href",$tmpHref);});});</script></head><body><div><table><tr id="testHref"><td><a id="txt" href="#">txt</a></td><td><a id="pdf" href="#">pdf</a></td><td><a id="excel" href="#">excel</a></td><td><a id="word" href="#">word</a></td><td><a id="xml" href="#">xml</a></td><td><a id="jpg" href="#">jpg</a></td><td><a id="gif" href="#">gif</a></td><td><a id="js" href="#">js</a></td><td><a id="jsp" href="#">jsp</a></td><td><a id="html" href="#">html</a></td></tr></table></div></body></html>过滤器filter配置如下package com.tangdi;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.PrintWriter;import .URLDecoder;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class DownLoadFilter implements Filter {public void destroy() {}public void doFilter(ServletRequest request1, ServletResponse response1,FilterChain arg2) throws IOException, ServletException {HttpServletRequest request = (HttpServletRequest) request1;HttpServletResponse response = (HttpServletResponse) response1;//request.setCharacterEncoding("UTF-8");//String filePath = new String(request.getParameter("filePath").getBytes("ISO8859-1"), "UTF-8");request.setCharacterEncoding("ISO8859-1");String filePath = new String(request.getParameter("filePath").getBytes("ISO8859-1"),"UTF-8");System.out.println("*****************************************************filePat h is :" + filePath);String suffix = filePath.substring(stIndexOf(".") + 1);System.out.println("********************suffix is:"+suffix);String contentType = getContentType(suffix);//获得尾缀设置不同contentTypeString contentDisposition = "attachment; filename="+new String(filePath.substring(stIndexOf("_")+1));System.out.println("********************************************"+contentDisposit ion);response.setCharacterEncoding("ISO8859-1");response.setContentType(contentType);response.setHeader("Content-disposition", new String(contentDisposition.getBytes("UTF-8"),"ISO8859-1"));try {InputStream is = new FileInputStream(filePath);OutputStream os = response.getOutputStream();int byteRead;byte[] buffer = new byte[1024];while ((byteRead = is.read(buffer)) != -1) {os.write(buffer, 0, byteRead);}os.flush();os.close();} catch (Exception e) {e.printStackTrace();}}/**** @param suffix 下载文件尾缀* @return 返回不同response.contentType*/public String getContentType(String suffix) {if (suffix.equals("txt")) {return "text/plain";} else if(suffix.equals("doc") || suffix.equals("docx")) {return "application/msword;charset=gb2312";} else if(suffix.equals("xls") || suffix.equals("xlsx")) {return "application/-excel";} else if(suffix.equals("pdf")) {return "application/pdf";}else if(suffix.equals("gif")){return "image/gif" ;}else if(suffix.equals("jpg")){return "image/jpeg" ;}else if(suffix.equals("htm")||suffix.equals("html")||suffix.equals("jsp")){return "text/html" ;}else if(suffix.equals("xml")){return "text/xml" ;}else if(suffix.equals("js")){return "application/x-javascript" ;}return "application/octet-stream";}public void init(FilterConfig config) throws ServletException {}}注:其中编码ISO8859-1不能乱改,否则出现解析路径错误或者下载文件出错。

jsp实现文件上传和下载 及留言板功能(代码及说明)

jsp实现文件上传和下载 及留言板功能(代码及说明)

Jsp实现文件上传和下载功能以及留言板功能文件上传和下载功能特点:1.可以多文件上传;2.返回上传后的文件名;3.form表单中的其他参数也可以得到。

先贴上传类,JspFileUploadpackage com.vogoal.util;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.Hashtable;import javax.servlet.ServletInputStream;import javax.servlet.http.HttpServletRequest;/** vogoalAPI 1.0* Auther SinNeR@* by * mail: vogoals@*//*** JSP上传文件类** @author SinNeR* @version 1.0*/public class JspFileUpload {/** request对象*/private HttpServletRequest request = null;/** 上传文件的路径*/private String uploadPath = null;/** 每次读取得字节的大小*/private static int BUFSIZE = 1024 * 8;/** 存储参数的Hashtable */private HashtableparamHt = new Hasptable();/** 存储上传的文件的文件名的ArrayList */private ArrayListupdFileArr = new ArrayList();/*** 设定request对象。

JS实现文件上传下载功能实例解析

JS实现文件上传下载功能实例解析

JS实现文件上传下载功能实例解析文件上传功能:文件上传是指将本地文件传输到服务器的过程。

通常,我们需要使用HTML `<input type="file">`元素来创建一个文件上传控件。

首先,在HTML文件中添加一个文件上传控件和一个上传按钮:```html<input type="file" id="fileInput"><button onclick="upload(">上传</button>```然后,在JavaScript中实现`upload(`函数,该函数将在点击上传按钮时被调用:```javascriptfunction uploavar fileInput = document.getElementById('fileInput');var file = fileInput.files[0];if (file)var formData = new FormData(;formData.append('file', file);var xhr = new XMLHttpRequest(;xhr.open('POST', '/upload', true);xhr.onload = functioif (xhr.status === 200)console.log('文件上传成功');} elseconsole.log('文件上传失败');}};xhr.send(formData);} elseconsole.log('请选择文件');}```在`upload(`函数中,我们首先获取文件上传控件的引用,然后获取所选文件。

接下来,我们创建一个`FormData`对象,并将所选文件添加到该对象中。

JS中FileReader类实现文件上传及时预览功能

JS中FileReader类实现文件上传及时预览功能

JS中FileReader类实现⽂件上传及时预览功能FileReader是H5浏览器才⽀持的JS类,如果不⽀持H5de浏览器可以使⽤FormData类实现⽂件的上传预览,使⽤可以参考我的下⼀篇博客:代码:<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>⽂件及时预览功能</title></head><body><input type="file" id="file"><img src="" id="preview"><script>var file = document.querySelector('#file');var priview = document.querySelector("#preview");// 监听⽂件上传事件file.onchange = function () {var reader = new FileReader();// 读取⽂件reader.readAsDataURL(this.files[0])reader.onload = function () {// 将⽂件读取结果显⽰到图⽚中priview.src = reader.result;}}</script></body></html>更多精彩内容请参考专题,和进⾏学习。

JS实现文件上传下载功能实例解析

JS实现文件上传下载功能实例解析

JS实现⽂件上传下载功能实例解析核⼼原理:该项⽬核⼼就是⽂件分块上传。

前后端要⾼度配合,需要双⽅约定好⼀些数据,才能完成⼤⽂件分块,我们在项⽬中要重点解决的以下问题。

* 如何分⽚;* 如何合成⼀个⽂件;* 中断了从哪个分⽚开始。

如何分,利⽤强⼤的js库,来减轻我们的⼯作,市场上已经能有关于⼤⽂件分块的轮⼦,虽然程序员的天性曾迫使我重新造轮⼦。

但是因为时间的关系还有⼯作的关系,我只能罢休了。

最后我选择了百度的WebUploader来实现前端所需。

如何合,在合之前,我们还得先解决⼀个问题,我们如何区分分块所属那个⽂件的。

刚开始的时候,我是采⽤了前端⽣成了唯⼀uuid来做⽂件的标志,在每个分⽚请求上带上。

不过后来在做秒传的时候我放弃了,采⽤了Md5来维护分块和⽂件关系。

在服务端合并⽂件,和记录分块的问题,在这⽅⾯其实⾏业已经给了很好的解决⽅案了。

参考迅雷,你会发现,每次下载中的时候,都会有两个⽂件,⼀个⽂件主体,另外⼀个就是⽂件临时⽂件,临时⽂件存储着每个分块对应字节位的状态。

这些都是需要前后端密切联系才能做好,前端需要根据固定⼤⼩对⽂件进⾏分⽚,并且请求中要带上分⽚序号和⼤⼩。

前端发送请求顺利到达后台后,服务器只需要按照请求数据中给的分⽚序号和每⽚分块⼤⼩(分⽚⼤⼩是固定且⼀样的)算出开始位置,与读取到的⽂件⽚段数据,写⼊⽂件即可。

为了便于开发,我将服务端的业务逻辑进⾏了如下划分,分成初始化,块处理,⽂件上传完毕等。

服务端的业务逻辑模块如下功能分析:⽂件夹⽣成模块⽂件夹上传完毕后由服务端进⾏扫描代码如下分块上传,分块处理逻辑应该是最简单的逻辑了,up6已经将⽂件进⾏了分块,并且对每个分块数据进⾏了标识,这些标识包括⽂件块的索引,⼤⼩,偏移,⽂件MD5,⽂件块MD5(需要开启)等信息,服务端在接收这些信息后便可以⾮常⽅便的进⾏处理了。

⽐如将块数据保存到分布式存储系统中分块上传可以说是我们整个项⽬的基础,像断点续传、暂停这些都是需要⽤到分块。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

JSP实现word文档的上传,在线预览,下载前两天帮同学实现在线预览word文档中的内容,而且需要提供可以下载的链接!在网上找了好久,都没有什么可行的方法,只得用最笨的方法来实现了。

希望得到各位大神的指教。

下面我就具体谈谈自己的实现过程,总结一下学习中的收获。

我相信很多程序员都遇到过,有些word文档希望直接在浏览器中打开进行预览,但是浏览器往往不是很配合,直接就提示下载,不像pdf文档,浏览器可以直接进行预览。

Word文档甚至始终都会通过本地的Office软件打开。

那么,问题来了,如何可以在线浏览word文档呢?其实,我在最初的时候也没有接触过这方面的东西,一般用的比较多的是生成pdf文档,而浏览器一般都支持pdf 的浏览,因此,直接通过后台传来的数据,再利用java和一些相关的jar包就可以生产一个pdf文档,在浏览器中可以直接显示。

尽管可以这样,但是我们需要的是解决实际问题啊?在浏览器中打开word文档。

在网上查了一些资料,也都没有查出个所以然。

看了好几个博客和论坛,也都是大同小异,测试了好几个,基本都是浏览器提示直接下载,或者打开,这里的打开也都是利用本地的Office软件打开的,所以这并不是自己想要的结果。

于是,自己动手,既然浏览器不支持显示word文档,我何不将word文档按照原来word的样式和内容转为html呢?而在浏览器中,html是再熟悉不过了。

基本思路就是这样,首先是利用上传的word文档转为html文件,然后生成的链接显示在jsp页面上,如果点击显示该word文档,那么实际上浏览器读取的是刚生成的html文件。

下面将自己的实现过程总结如下,欢迎各位朋友提供更好的解决办法。

转载本文请在文章明显位置标明文章的原始出处,个人博客: 邮箱:it_red@1. Word文档转为html这里采用第三方组件jacob来实现的,本demo所用的版本为jacob-1.18-M2;下载链接为:http://sourceforge.jp/projects/sfnet_jacob-project/releases/ 先在这里说一下,用这个组件还是比较麻烦的,首先要根据自己的电脑实际情况将压缩包里面的动态链接库放到多个目录下,而这个动态链接库为:将其复制的位置分别是:C:\Windows\System32机器所安装的java目录下的jdk下的bin中在myeclipse中指定jre然后就是编码阶段:导入相关的jar包,新建一个WordReader类,源码如下:package com.mh.test;import com.jacob.activeX.ActiveXComponent;import .Dispatch;import .Variant;public class WordReader {public static void extractDoc(String inputFIle, String outputFile) {boolean flag = false;// 打开Word应用程序ActiveXComponent app = new ActiveXComponent("Word.Application");try {// 设置word不可见app.setProperty("Visible", newVariant(false));// 打开word文件Dispatch doc1 =app.getProperty("Documents").toDispatch();Dispatch doc2 = Dispatch.invoke(doc1, "Open", Dispatch.Method, new Object[] {inputFIle, new Variant(false), newVariant(true)},new int[1]).toDispatch();// 作为html格式保存到临时文件::参数new Variant(8)其中8表示word转html;7表示word转txt;44表示Excel转html。

Dispatch.invoke(doc2, "SaveAs", Dispatch.Method, new Object[] {outputFile, new Variant(8)}, new int[1]);// 关闭wordVariant f = new Variant(false);Dispatch.call(doc2, "Close", f);flag = true;} catch (Exception e) {e.printStackTrace();} finally {app.invoke("Quit", new Variant[] {});}if (flag == true) {System.out.println("Transformed Successfully");} else {System.out.println("Transform Failed");}}}新建测试类,包含main方法:package com.mh.test;public class TT {/*** @param args*/public static void main(String[] args) {WordReader.extractDoc("e:/f.docx","e:/ee.html");}}这里是将word转为html就算完成了,因此知道了,如果需要将word转为html就可以直接调用WordReader中的方法就可以实现。

这里就不多说了。

2. 且说文件的上传,下载这里是利用Struts2实现的上传功能,index页面中的源码:&lt;%@ page language="java" pageEncoding="utf-8"%&gt; &lt;%@ taglib uri="/struts-tags" prefix="s"%&gt;&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;&lt;html&gt;&lt;head&gt;&lt;title&gt;文件上传&lt;/title&gt;&lt;/script&gt;&lt;/head&gt;&lt;body&gt;&lt;s:form action="upload" method="post" enctype="multipart/form-data"&gt;&lt;s:file name="upload" label="上传的文件"id="ufile"&gt;&lt;/s:file&gt;&lt;s:submit value="上传"&gt;&lt;/s:submit&gt;&lt;/s:form&gt;&lt;div id="retShow"&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;Struts.xml中的相关配置:&lt;?xml version="1.0" encoding="UTF-8" ?&gt;&lt;!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"&gt; &lt;struts&gt;&lt;package name="default"extends="struts-default"&gt;&lt;action name="upload"class="com.mh.action.UploadAction"&gt;&lt;resultname="success"&gt;/success.jsp&lt;/result&gt;&lt;/action&gt;&lt;action name="*viewAction"class="com.mh.action.ViewAction" method="{1}"&gt;&lt;/action&gt;&lt;/package&gt;&lt;constant name="struts.multipart.saveDir" value="/tmp"&gt;&lt;/constant&gt;&lt;/struts&gt;UploadAction的源码:package com.mh.action;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import java.util.List;import javax.servlet.ServletContext;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.ServletActionContext;import org.apache.struts2.util.ServletContextAware;import com.mh.test.WordReader;import com.opensymphony.xwork2.ActionSupport;public class UploadAction extends ActionSupport implements ServletContextAware {private List&lt;File&gt; upload;private List&lt;String&gt; uploadFileName;private ServletContext context;HttpServletRequest request = ServletActionContext.getRequest();public HttpServletRequest getRequest() {return request;}public void setRequest(HttpServletRequest request) { this.request = request;}public String execute() throws Exception {String path = "";if (upload != null) {for (int i = 0; i &lt; upload.size(); i++) {System.out.println(upload.get(i).getPath() + "-----------------------------"+ getUploadFileName().get(i));InputStream is = newFileInputStream(upload.get(i));path =context.getRealPath(getUploadFileName().get(i));System.out.println(context.getRealPath(getUploadFileNa me().get(i)) + "==============");String str = getUploadFileName().get(i);String view =getUploadFileName().get(i).replace(".docx", ".html");request.setAttribute("str", str);request.setAttribute("view", view);OutputStream os = new FileOutputStream(context.getRealPath(getUploadFileNam e().get(i)));byte buffer[] = new byte[1024];int count = 0;while ((count = is.read(buffer)) &gt; 0) {os.write(buffer, 0, count);}os.close();is.close();}}System.out.println(path.replace("\\","/")+"&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp; &amp;&amp;&amp;&amp;");System.out.println(path.replace("\\","/").replace(".docx", ".html")+"%%%%%%%%%%%%%");WordReader.extractDoc(path.replace("\\", "/"), path.replace("\\", "/").replace(".docx", ".html"));return SUCCESS;}public List&lt;File&gt; getUpload() {return upload;}public void setUpload(List&lt;File&gt; upload) {this.upload = upload;}public List&lt;String&gt; getUploadFileName() {return uploadFileName;}public void setUploadFileName(List&lt;String&gt; uploadFileName) {this.uploadFileName = uploadFileName;}public void setServletContext(ServletContext context) {this.context = context;}}ViewAction源码:package com.mh.action;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.ServletActionContext;import com.mh.test.WordReader;import com.opensymphony.xwork2.ActionSupport;public class ViewAction extends ActionSupport {private static final long serialVersionUID = 1814430419057331187L;HttpServletRequest request = ServletActionContext.getRequest();public void UView() {String ufile = request.getParameter("upf");System.out.println(ufile + "++++++++++++++++");System.out.println(ufile.replace("\\", "/") +"****************");WordReader.extractDoc(ufile.replace("\\", "/"), ufile.replace("\\", "/").replace(".docx", ".html"));}}在这里同时将上面实现的转换的功能加到模块中,只要上传就进行转换。

相关文档
最新文档