http://hi.baidu.com/cqf10000/blog/item/58e9c2c4890df6ba8326ac29.html
------------------------------------------------
Java实现上传和下载上传下载学习 2007-09-15 17:36:45 阅读165 评论0 字号:大中小 订阅 .
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'UpLoad.jsp' starting page</title>
</head>
<body>
<form action="upLoad.do" enctype="MULTIPART/FORM-DATA" method=post name="fileForm">
请选择上传的文件:<br/>
<input type="file" name="filename1"/>
<br/>
<input type="file" name="filename2"/>
<br/>
<input type="file" name="filename3"/>
<br/>
<input type="file" name="filename3"/>
<br/>
<input type="submit" value="开始上传"/>
</form>
</body>
</html>
这个是实现多文件上传的jsp页面,UpLoad.jsp
下面是实现多文件上传的FileUpload.java文件:
package load.up;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.util.List;
import java.util.Date;
import java.util.Iterator;
import org.apache.commons.fileupload.DiskFileUpload;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class FileUpload {
/**
* 实现文件上传功能
* @param request HttpServletRequest
* @param tempPath 临时路径
* @param uploadPath 上传路径
* @param newFileName 新文件名称
* @return boolean 是否成功
*/
public boolean doFileUpload(HttpServletRequest request, String upLoadPath,int msgId) {
/** 成功上传フラグ */
boolean flag=true;
try {
/** 获取当前系统时间对象 */
Date date = new Date();
if (!new File(upLoadPath).isDirectory())
new File(upLoadPath).mkdirs();
// if (!new File(tempPath).isDirectory())
// new File(tempPath).mkdirs();
DiskFileUpload diskFUpload = new DiskFileUpload();
/** 设置Upload文件大小尺寸 */
diskFUpload.setSizeMax(5 * 1024 * 1024);
/** 设置缓冲区大小 */
diskFUpload.setSizeThreshold(4 * 1024);
// /** 设置临时存储路径 */
// diskFUpload.setRepositoryPath(tempPath);
/** 得到所有上传文件List */
List fileItems = diskFUpload.parseRequest(request);
/** 取得上传文件List迭代器 */
Iterator it = fileItems.iterator();
/** 遍历迭代器中的对象,进行对象处理 */
while (it.hasNext()) {
/** 取得单个文件对象 */
FileItem fi = (FileItem) it.next();
/** 获取上传文件文件名,包括文件路径 */
String filePathName = fi.getName();
String sysYear = date.getYear() + "";
String sysMonth = date.getMonth() + "";
String sysDay = date.getDay() + "";
String sysHours = date.getHours() + "";
String sysMin = date.getMinutes() + "";
String sysSec = date.getSeconds() + "";
long sys=System.currentTimeMillis();
/** 取当前系统时间 */
String sysTime = sysYear + sysMonth + sysDay + sysHours
+ sysMin + sysSec;
/** 获取上传文件原文件名 */
String fileOldName=filePathName.substring(filePathName.lastIndexOf("\\") + 1);
/** 获取文件名,包括扩展名 */
String fileName=sysTime+sys+fileOldName;
/** 上传文件服务器端保存路径 */
String url=upLoadPath +"\\";
/** 文件存在性check判断 */
if (fileName != null) {
/** 服务器上保存上传文件 */
fi.write(new File(url+fileName));
/** 保存上传文件信息,更新TBL */
this.insertFileMsg(msgId, url, fileName, fileOldName);
flag = true;
} else {
flag = false;
}
}
} catch (Exception e) {
flag=false;
}
return flag;
}
/**
* 更新TBL,保存上传文件相关信息
* @param msgId 用户ID
* @param fileUrl 服务器端上传文件保存路径
* @param fileName 服务器端保存上传文件的文件名
*/
private void insertFileMsg(int msgId,String fileUrl,String fileName,String fileOldName){
Connection conn=null;
/** 获取数据库链接Connection */
conn=this.getConn();
String sql = "insert into tfile(message_id,file_url,file_name,file_old_name) values("
+ msgId
+ ",'"
+ fileUrl.replace("\\", "/")
+ "','"
+ fileName
+ "','"
+ fileOldName + "')";
// StringBuffer sb = new StringBuffer();
// sb.append("insert into tfile(message_id,file_url) values(2)");
System.out.println(sql);
try {
Statement stmt=conn.createStatement();
stmt.execute(sql);
} catch (SQLException e) {
e.printStackTrace();
}
System.out.println(msgId+"::"+fileUrl+"::"+fileName);
}
/**
* 获取数据库链接Connection
* @return 数据库链接Connection
*/
private Connection getConn(){
Connection conn=null;
String driver_class="com.mysql.jdbc.Driver";
String url="jdbc:mysql://192.168.1.19:3306/ctemdidb?useUnicode=true&characterEncoding=utf8";
String userName="root";
String password="root123";
try {
Class.forName(driver_class);
conn=DriverManager.getConnection(url,userName,password);
} catch (Exception e) {
if(conn!=null){
try {
conn.close();
} catch (SQLException e1) {
e1.printStackTrace();
}
}
}
return conn;
}
}
红色部分就是提供上传的方法。
下面是实现FileDownload的javaclass文件
package load.down;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import load.FileMsg;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.InputStream;
import java.io.FileInputStream;
import java.io.OutputStream;
public class FileDownload {
public List getFileMsg(int msgId) {
List fileMsglist = new ArrayList();
Connection conn = null;
conn = this.getConn();
String sql = "select file_url,file_name,file_old_name from tfile where message_id="
+ msgId;
try {
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
FileMsg fileMsg = new FileMsg();
int messageId=rs.getInt("message_id");
String fileUrl = rs.getString("file_url");
String fileName = rs.getString("file_name");
String fileOldName = rs.getString("file_old_name");
fileMsg.setMessageId(messageId);
fileMsg.setFileUrl(fileUrl);
fileMsg.setFileName(fileName);
fileMsg.setFileOldName(fileOldName);
fileMsglist.add(fileMsg);
}
} catch (SQLException e) {
e.printStackTrace();
}
return fileMsglist;
}
/**
* 获取数据库链接Connection
*
* @return 数据库链接Connection
*/
private Connection getConn() {
Connection conn = null;
String driver_class = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://192.168.1.19:3306/ctemdidb?useUnicode=true&characterEncoding=utf8";
String userName = "root";
String password = "root123";
try {
Class.forName(driver_class);
conn = DriverManager.getConnection(url, userName, password);
} catch (Exception e) {
}
return conn;
}
/**
* download文件
*
* @param request
* @param response
* @throws Exception
*/
public void doFileDownload(String path, String fileName,
HttpServletResponse response) throws Exception {
File file = new File(path);
InputStream in = new FileInputStream(file);
OutputStream os = response.getOutputStream();
response.addHeader("Content-Disposition", "attachment;filename="
+ fileName);
response.addHeader("Content-Length", file.length() + "");
response.setCharacterEncoding("utf-8");
response.setContentType("application/octet-stream");
int data = 0;
while ((data = in.read()) != -1) {
os.write(data);
}
os.close();
in.close();
}
}
红色部分是实现下载的方法,参数因个人而异,response是向页面返回信息
分享到:
相关推荐
在Java编程语言中,文件上传和下载是网络应用中常见的功能,特别是在Web应用程序中。这里,我们将深入探讨如何实现这两个核心操作,以及相关的技术、工具和最佳实践。 首先,文件上传通常涉及到用户通过Web表单将...
以上就是关于“java实现上传和下载”的核心知识点,涵盖了从HTTP请求处理到文件操作、安全控制和性能优化等多个方面。在实际开发中,可以根据具体需求和场景,结合这些知识点进行灵活应用和扩展。在提供的`myupload`...
在java代码中实现文件的上传和下载,通过页面的file文件上传到java代码段,获取文件的大小和名字
以上就是使用Java实现文件上传和下载的基本步骤及注意事项。通过结合源码和适当的工具,你可以构建健壮且易于维护的文件管理功能。在实际项目中,应根据具体需求进行调整和优化,确保系统的稳定性和用户体验。
这里我们将深入探讨这些功能的实现,并结合标签`java xpdf java实现pdf`来讨论XPDF库在Java中的应用。 1. **PDF上传**: PDF上传通常涉及用户通过Web界面或API接口提交PDF文件。Java中,可以使用Apache Commons ...
以上就是关于“java实现图片下载和上传.zip”项目中的核心知识点,包括Spring、SpringMVC、MyBatis、Commons-FileUpload和Commons-IO的使用,以及在实际应用中需要考虑的安全性和性能优化措施。通过这些技术,开发者...
在Java开发中,实现视频上传是一项常见的任务,尤其在构建Web应用或云存储服务时。这个Demo涵盖了几个关键的技术点,包括文件上传、视频转码和播放。让我们逐一深入探讨这些知识点。 首先,**文件上传**是Web应用...
利用java图形化界面和网络编程相结合实现的--文件上传。 运行步骤: (1)分别运行工程两个包中的两个.java文件(UploadClient.java和UploadServer.java)分别会弹出“上传客服端”和“上传服务器”两个窗口。 ...
Java实现COS(Cloud Object Storage)上传与下载是云计算服务中的常见操作,主要涉及对象存储的概念、Java SDK的使用以及文件I/O操作。COS通常由云服务提供商提供,用于存储大量的非结构化数据,如图片、视频、文档...
以下将详细介绍如何使用Java实现FTP文件上传和下载的步骤,以及涉及到的关键知识点。 首先,Java通过`java.net`和`javax.net`包提供了FTP功能,但这些原生API并不易用。因此,大多数开发人员会使用第三方库如Apache...
在Java编程环境中,处理PDF(Portable Document Format)文件是一项常见的任务,这通常涉及到文件的上传、下载、在线预览、删除以及修改等操作。以下是对这些功能的详细说明: 1. **PDF上传**: PDF文件的上传主要...
在Java开发中,文件和图片的上传下载是常见的功能需求,尤其在Web应用中更为重要。本篇文章将详细探讨三种不同的实现方式,分别是使用JSP+Servlet、SmartUpload库以及Apache的FileUpload组件。 首先,我们来看第一...
本文将详细介绍如何使用Java实现简单的FTP文件上传与下载功能,并基于提供的"ftpLoadDown.jar"库和"使用方法.txt"来解析相关知识。 首先,我们需要了解FTP的基础知识。FTP是一种应用层协议,它依赖于TCP/IP协议栈,...
### Java Spring Boot应用程序中实现文件上传和下载功能 在现代Web开发中,文件上传与下载是常见的需求之一。Spring Boot框架提供了简洁的方式帮助开发者轻松实现这些功能。本文将详细介绍如何在Spring Boot项目中...
在Java Web开发中,图片上传是一项常见的功能,用于允许用户上传他们的图片文件到服务器,然后在网站上展示。本教程将深入讲解如何使用Struts2框架和Apache Commons FileUpload库来实现这一功能。 首先,我们需要...
本文将深入探讨如何使用Java实现FTP文件上传和下载,包括基本概念、核心类库、实现步骤以及测试用例。 首先,Java通过`java.net`和`org.apache.commons.net.ftp`两个主要库支持FTP操作。`java.net`库中的`FTPClient...
本项目通过一个简单的源码实例,演示了如何实现在JSP(JavaServer Pages)界面上处理文本和图片的上传与下载,涵盖了相关的Java技术和Web开发知识。 首先,我们来了解文件上传的基本原理。在HTTP协议中,文件上传...
总结起来,Java实现图片上传涉及的关键技术有:文件操作(File类)、HTTP请求(Multipart编码)、服务器端文件处理(如Apache Commons FileUpload)、存储策略(文件系统或云存储)以及安全性与性能优化(如文件大小...
这篇博客“Java实现FTP上传与下载”可能详细介绍了如何利用Java来实现FTP客户端的功能,包括文件的上传和下载。这里我们将深入探讨Java中实现FTP操作的核心知识点。 首先,Java通过`commons-net`库提供了对FTP的...
使用 Java 语言实现上传网络图片到微信临时素材需要考虑多方面的因素,包括获取 access_token、边界设置、文件流输出和异常处理等。通过本文,我们可以了解到微信临时素材的概念和实现上传网络图片到微信临时素材的...