JSP 实现多个文件上传的两种方法

JSP  实现多个文件上传的两种方法
JSP  实现多个文件上传的两种方法

JSP 实现多个文件上传的两种方法

JSP实现文件上传的实现方式是这样的:使用ServletRequest类的getInputStream()方法获得一个客户端向服务器发出的数据流,然后处理这个数据流,从中分析得到文件上传中传递到服务器的各个参数和数据,然后将其中的文件数据存储为一个文件或插入到数据库中。

通常JSP页面中不处理文件的上传功能,而是把这些功能放到Servlet 或JavaBean中去实现。使用Servlet完成文件上传的例子在其他JSP书籍中有所介绍,这里只介绍使用JeanBean是如何完成文件上传的。

JSP中实现文件的上传可以采用两种方式即采用HTTP协议和FTP协议实现,二者在传输的原理上存在很大的差异。以下将结合源代码对它们的实现做简单介绍,相信读者会从中有所收获。

在JSP中使用JavaBean实现基于Web的文件上传功能一般需要三种文件结合完成。这三种文件分别是提供界面的HTML页面文件、完成调用实现上传功能的JavaBean的JSP文件和实现JavaBean的Java的类文件。

1.采用HTTP协议实现多个文件的上传

在过去的HTML页面中,表单不能实现文件的上传,这多少限制了一些网页的功能。RFC1867规范(即HTML中实现基于表单的文件上传)对表单作出了扩展,增加了一个表单元素(input type=file)。通过使用这个元素,浏览器会自动生成一个输入框和一个按钮,输入框可供用户填写本地的文件名和路径名,按钮可以让浏览器打开一个文件选择框供用户选择文件。具体的表单实现如下:

选择了文件后直接输入本地文件的绝对路径,表单的action属性值是*.jsp,这意味着请求(包括上载的文件)将发送给*.jsp文件。在这个过程中实际上就实现了HTTP方式的文件上载。文件从客户端到服务器的上传是由HTTP协议的通用网关界面(CGI)支持的。这种上载方式要求浏览器和WEB服务器两方面都能够支持Rfc1867。JavaBean 通过ServletRequest类的getInputStream()方法获得一个客户端向服务器发出的数据流、分析上传的文件格式,根据分析结果将多个文件依次输出服务器端的目标文件中。

2.采用FTP协议实现多个文件的上传

FTP协议是Internet上用来传送文件的协议,规定了Internet上文件互相传送的标准。在Java中实现这一功能是借助FtpClient类完成的。具体实现过程:首先与FTP服务器建立连接。然后初始化文件的传输方式,包括ASCII和BINARY两种方

PHP 文件上传进度条实现程序

PHP 文件上传进度条实现程序 在php中要实现上传进度条有很多方法,如ajax是现在的主流或利用iframe来实现,现在我们来介绍php的apc与uploadprogress实现文件上传进度条效果。 目前我知道的方法有两种,一种是使用PHP的创始人Rasmus Lerdorf 写的APC扩展模块来实现(https://www.360docs.net/doc/8b11911575.html,/package/apc),另外一种方法是使用PECL扩展模块 uploadprogress实现(https://www.360docs.net/doc/8b11911575.html,/package/uploadprogress)我这里举两个分别实现的例子供参考,更灵活的应用根据自己需要来修改。 APC实现方法: 安装APC,参照官方文档安装,可以使用PECL模块安装方法快速简捷,这里不说明 配置php.ini,设置参数apc.rfc1867=1 ,使APC支持上传进度条功能,在APC源码说明文档里面有说明 代码范例: 代码如下复制代码if ($_SERVER['REQUEST_METHOD'] == 'POST') { //上传请求 $status = apc_fetch('upload_' . $_POST['APC_UPLOAD_PROGRESS']); $status['done'] = 1; echo json_encode($status); //输出给用户端页面里的ajax调用,相关文档请自己寻找exit; } elseif (isset($_GET['progress_key'])) { //读取上传进度 $status = apc_fetch('upload_'.$_GET['progress_key']); echo json_encode($status);

jsp中实现一个页面纯io流上传文件

jsp中实现一个页面纯io流上传文件 <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%> <%@page import="java.io.*"%> <%@page import="java.sql.*"%> My JSP 'Xs.jsp' starting page <%! //此方法用于将指定的文本转换成ISO-8859-1字符编码格式 public String codeToString(String str) { String s = str; try { byte tempB[] = s.getBytes("ISO-8859-1"); s = new String(tempB); return s; } catch (Exception e) { return s; } } %> <% //声明一个临时文件名 String tempFileName = new String("tempFileName1"); //在D盘建立一个临时文件,名为tempFileName File tempFile1 = new File("D:/", tempFileName); //根据指定的这个临时文件,来创建一个文件字节输出流(用于向磁盘写文件) FileOutputStream outputFile1 = new FileOutputStream(tempFile1); //由返回一个文件字节输入流(用于读文件) InputStream fileSource1 = request.getInputStream(); //实例一个字节数组初始为1000kb byte b[] = new byte[1000]; int n; //利用while循环,先读出这个文件大小,判断为不为-1,如果不为-1就输出数据,向磁盘写文件数据 while ((n = fileSource1.read(b)) != -1) { outputFile1.write(b, 0, n); //将 n 个字节从b字节数组写入到outputFile1文件,偏移量从0开始 } //关闭文件输出流 outputFile1.close(); //关闭文件输入流 fileSource1.close(); //实例化一个RandomAccessFile 对象.创建从中读取和向其中写入(可选)的随机存取文件流,该文件由 File 参数指定。 //将创建一个新的 FileDescriptor 对象来表示此文件的连接。 //mode 参数指定用以打开文件的访问模式。允许的值及其含意为:

Apache FileUpload 四种方式实现文件上传

将Apache的commons-fileupload.jar放在应用程序的WEB-INF\lib下,即可使用。下面举例介绍如何使用它的文件上传功能。 所使用的fileUpload版本为1.2,环境为Eclipse3.3+MyEclipse6.0。FileUpload 是基于Commons IO的,所以在进入项目前先确定Commons IO的jar包(本文使用commons-io-1.3.2.jar)在WEB-INF\lib下。 此文作示例工程可在文章最后的附件中下载。 示例1 最简单的例子,通过ServletFileUpload静态类来解析Request,工厂类FileItemFactory会对mulipart类的表单中的所有字段进行处理,不只是file字段。getName()得到文件名,getString ()得到表单数据内容,isFormField()可判断是否为普通的表单项。 demo1.html File upload //必须是multipart的表单数据。

Your name:

File:


demo1.jsp <%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <%@ page import="https://www.360docs.net/doc/8b11911575.html,mons.fileupload.*"%> <%@ page import="https://www.360docs.net/doc/8b11911575.html,mons.fileupload.servlet.*"%> <%@ page import="https://www.360docs.net/doc/8b11911575.html,mons.fileupload.disk.*"%> <%@ page import="java.util.*"%> <% boolean isMultipart = ServletFileUpload.isMultipartContent(request);//检查输入请求是否为multipart表单数据。 if (isMultipart == true) { FileItemFactory factory = new DiskFileItemFactory();//为该请求创建一个

jsp实现文件上传和下载(代码及说明)

特点: 1.可以多文件上传; 2.返回上传后的文件名; 3.form表单中的其他参数也可以得到。先贴上传类,JspFileUpload package 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@https://www.360docs.net/doc/8b11911575.html, * by https://www.360docs.net/doc/8b11911575.html, * mail: vogoals@hotm https://www.360docs.net/doc/8b11911575.html, */ /** * 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对象。 * * @param request * HttpServletRequest request对象 */ public void setRequest(HttpServletRequest request) { this.request = request; } /** * 设定文件上传路径。 * * @param path * 用户指定的文件的上传路径。 */ public void setUploadPath(String path) { this.uploadPath = path; } /** * 文件上传处理主程序。 �������B * * @return int 操作结果0 文件操作成功;1 request对象不存在。2 没有设定文件保存路径或者

JSP上传图片到数据库的例子

现在想写个程序 向数据库中插入图片路径(或则插入图片也可以) 最好是插入图片的路径这样可插入任意大的图片... 请高手指点一下思路.. 感激不尽 1.通过显示层向数据库中插入图片 2.在界面显示的时候是小图片(缩小过的) 3.当点击查看大图片会显示图片(原来的大小) 提供给你图片上传和显示的代码吧!希望对你有帮助 我在程序代码里贴了向Mysql数据库写入image代码的程序,可是好多人都是Java的初学者,对于这段代码,他们无法将它转换成jsp,所以我在这在写一下用jsp怎样向数据库写入图像文件。大家先在数据库建这样一张表,我下面的这些代码对任何数据库都通用,只要支持blob类型的 只要大家将连接数据库的参数改一下就可以了。 SQL> create table image(id int,content varchar(200),image blob); 如果在sqlserver2000的数据库中,可以将blob字段换为image类型,这在SqlServer2000中是新增的。 testimage.html文件内容如下: Image File



我们在Form的action里定义了一个动作testimage.jsp,它的内容如下: <%@ page contentType= "text/html;charset=gb2312 "%> <%@ page import= "java.sql.* " %> <%@ page import= "java.util.* "%> <%@ page import= "java.text.* "%> <%@ page import= "java.io.* "%>

jsp 图片上传功能实现原创

package com.lsl.util; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import javax.imageio.ImageIO; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGEncodeParam; import com.sun.image.codec.jpeg.JPEGImageEncoder; /** * * @author Administrator * 图像处理类 */ public class PicCompression { /** * 压缩图片方法 * * @param oldFile * 将要压缩的图片的绝对地址 * @param width * 压缩宽 * @param height * 压缩长 * @param quality * 压缩清晰度建议为1.0 * @param smallIcon * 压缩图片后,添加的扩展名 * @return */ public String zoom(String oldFile, int width, int height, float quality) { if (oldFile == null) { return null; } String newImage = null; try { File file = new File(oldFile);

文件上传原理,联系适用进度条

using System; using System.Collections.Generic; using https://www.360docs.net/doc/8b11911575.html,ponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; namespace文件的上传原理_练习使用进度条_ { public partial class Form1 : Form { string path;//选择文件的路径 string fName;//要上传的文件的名字 public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { progressBar1.Visible = false; label2.Visible = false; } private void btnLiulan_Click(object sender, EventArgs e) { openFileDialog1.ShowDialog(); fName = openFileDialog1.SafeFileName.ToString();

textBox1.Text = fName; path = openFileDialog1.FileName.ToString(); path = path.Remove(path.Length - fName.Length); } private void btnStartDownload_Click(object sender, EventArgs e) { int length = 0; int speed; DirectoryInfo di = new DirectoryInfo(path); FileInfo[] fi = di.GetFiles(); foreach (FileInfo fi1 in fi) { if (fName == fi1.ToString()) { length = (int)(fi1.Length); break; } } speed = length / 1024; progressBar1.Maximum = (length / 1024)*100; progressBar1.Value = 0; progressBar1.Step = speed; label2.Visible = true; progressBar1.Visible = true; for (int i = 0; i < (length / 1024) * 100; i += speed) { progressBar1.Value += speed; //label2.Text = "速度:" + speed + "KB/s"; System.Threading.Thread.Sleep(100); } } } }

WebUploader,Java大文件分片上传

Web大文件分片上传 Web环境中大文件上传不能再用form表单一次上传了,这样效率太低; 我在不断尝试SpringMVC环境下分片接受文件,最终失败;原因目测是SpringMVC、Struts 框架是不支持HTML5方式上传的(这类框架只能支持Form表单方式的文件上传,或者FLash) 那我们可以使用Servlet和SpringMVC结合集成方式实现大文件分片上传; 一、来看看我们的web.xml的配置 很明显两个servlet,上面一个配置的是SpringMVC的入口,下面servlet是视频上传; 他们俩的url-pattern不能冲突;

二、先来看看WebUploader的前端代码 以下是代码: <%@page language="java"contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

3.

JSP文件上传

UploadExample.jsp <%@ page contentType="text/html;charset=gb2312"%> <%= application.getServerInfo() %> 上传文件程序应用示例

<%-- 类型enctype用multipart/form-data,这样可以把文件中的数据作为流式数据上传,不管是什么文件类型,均可上传。--%> 请选择要上传的文件
doUpload.jsp

<%@ page contentType="text/html; charset=GBK" %> <%@ page import="java.io.*"%> <%@ page import="java.util.*"%> <%@ page import="javax.servlet.*"%> <%@ page import="javax.servlet.http.*"%> upFile <% //定义上载文件的最大字节 int MAX_SIZE = 102400 * 102400; // 创建根路径的保存变量 String rootPath; //声明文件读入类 DataInputStream in = null; FileOutputStream fileOut = null; //取得客户端的网络地址 String remoteAddr = request.getRemoteAddr(); //获得服务器的名字 String serverName = request.getServerName();

jsp多文件上传到数据库

数据库的创建: 数据库名叫:csdn 表名:savepicture DROP TABLE IF EXISTS `savepicture`; CREA TE TABLE `savepicture` ( `id` int(10) NOT NULL auto_increment, `picture` blob NOT NULL, PRIMARY KEY(`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 好动手创建工程啦: 其实非常简单,一看就明白。把需要的包该导的都导了就行了。接着我们创建上传页面: <%@ page language="java" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%>

File Upload

上传图片
图片路径:
很简单,就是个上传框和按钮,别的没有了。至于一些css就是稍微的装饰装饰,一会也在下面写上!

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

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文件。 下面将自己的实现过程总结如下,欢迎各位朋友提供更好的解决办法。转载本文请在文章明显位置标明文章的原始出处,个人博客:https://www.360docs.net/doc/8b11911575.html, 邮箱: it_red@https://www.360docs.net/doc/8b11911575.html, 1. Word文档转为html 这里采用第三方组件jacob来实现的,本demo所用的版本为jacob-1.18-M2;下载链接为: http://sourceforge.jp/projects/sfnet_jacob-project/releases/ 先在这里说一下,用这个组件还是比较麻烦的,首先要根据自己的电脑实际情况将压缩包里面的动态链接库 放到多个目录下,而这个动态链接库为: 将其复制的位置分别是: C:\Windows\System32 机器所安装的java目录下的jdk下的bin中

电子投标文件制作及上传问题汇总

电子投标文件制作工具常见问题汇总 工具安装要求 操作系统:推荐win7旗舰版(完整版) 浏览器:推荐IE9 Office:2007及以上版本(2003、wps不可以,如有请卸载)。 另:安装office2003,同时安装2007兼容包方式也不可以。安装包获取 打开赤峰公共资源交易中心网站(),在网站“常用工具”栏 目下载。 注:CA驱动及投标文件制作工具均在此栏目下载 工具安装问题 1、安装工具之前请先关闭360安全卫士,360杀毒等杀毒软件, 否则可能会导致一些插件无法安装导致安装失败 2、安装过程中如遇弹出框提示“XXX文件正在使用”,点击“忽 略”按钮继续安装,待安装完成后重启电脑即可。 3、如安装过程中,进度条已到最后但就是卡住系统无响应,请 重装系统或更换电脑安装。 投标文件制作问题 1、投标工具安装完成后第一次打开会弹出检测页面,按照要

求进行每一项内容检测,检测完成后点击“启动招投标工具”按钮,正式打开新点投标文件制作工具(赤峰版)。 2、制作过程如代理发布答疑文件,请下载最新的答疑文件重 新导入制作(多次答疑使用最新版),之前使用招标文件制作的工程文件(etbp格式)、或已签章加密生成电子投标文件(CFTF、nCFTF格式)均无效(无法上传至系统中)。 3、“授权委托书”中要求附的“法定代表人身份证明”文件, 请放入“投标所需其她材料”文档里一并上传。 4、“施工组织设计”模块操作方法:首先将预先编制完成的的 完整的施工组织设计文档导入,然后将左侧节点与右边施工组织设计正文内容一一对应。 对应方法:右击左侧节点,点击“对应文档位置”。完成后后左侧节点颜色会由红色变为黑色。 如对应错误需重新调整,将右侧正文滚动至需要的地方,仍旧右击左侧节点,点击“对应文档位置”即可。 注意: 1、请各投标单位在节点对应时务必认真对待,千万不要 对应出错。 2、左侧节点为代理设置的施工组织设计评分点,请勿擅 自进行添加,删除等操作,否则后果自负。 3、施工组织设计文档编制请严格按照招标文件要求,内 容方面问题软件公司不予解答,具体可咨询代理。

相关文档
最新文档