今天闲暇无所事事,很长时间没有写博客了,突然想起很多开发web项目中,对于文件上传习惯于使用Apache下commons-fileupload来实现上传。本人实现了一个servlet文件的上传,由于本人水平有限,希望各位大虾拍砖。废话不多讲,直接上主菜………
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class UploadServlet extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = 1L;
private static final String saveDir = new String("e:");
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
InputStream is = null;
FileOutputStream os = null;
try {
is = req.getInputStream();
String savePath = saveDir + File.separator + getFileName(
new byte[1024], req.getInputStream(), "UTF-8")
.replaceAll("\"", "");
File destFile = new File(savePath);
os = new FileOutputStream(destFile);
byte[] tempByte = new byte[1024];
int byteread = 0;
while ((byteread = is.read(tempByte)) != -1) {
os.write(tempByte, 0, byteread);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (null != is) {
is.close();
}
if (null != os) {
os.close();
}
}
}
/**
* 获得文件名称
* @param buffer
* @param servletinputstream
* @param charset
* @return
*/
private String getFileName(byte[] buffer, ServletInputStream servletinputstream, String charset) {
String line = null;
while ( (line = readLine(servletinputstream, buffer, charset)) != null) {
if (line.startsWith("Content-Disposition: form-data;")) {
int i = line.indexOf("filename=");
if (i >= 0) {
String fName = subFullName(line);
if (fName.equals("")) {
continue;
}
return fName;
}
} else {
continue;
}
}
return null;
}
/**
* 读取指定byte[]数组长度的String
* @param is
* @param buffer
* @param charset
* @return
*/
private String readLine(ServletInputStream is, byte[] buffer, String charset) {
int len = 0;
try {
len = is.readLine(buffer, 0, buffer.length);
if (-1 == len) {
return null;
}
if (null != charset) {
return new String(buffer, 0, buffer.length);
} else {
return new String(buffer, 0, buffer.length, charset);
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* 截取文件名称
* @param line
* @return
*/
private String subFullName(String line) {
if (line == null) {
return "";
}
int i = line.indexOf("filename=");
line = line.substring(i + 9).trim();
i = line.lastIndexOf("");
if (i < 0 || i >= line.length() - 1) {
i = line.lastIndexOf("/");
if (line.equals("")) {
return "";
}
if (i < 0 || i >= line.length() - 1) {
return line;
}
}
return line.substring(i + 1, line.length() - 1);
}
}
分享到:
相关推荐
在实际开发中,你还需要考虑错误处理和异常捕获,确保在文件上传过程中遇到问题时能够妥善处理。此外,如果SharePoint的访问控制较为严格,可能需要使用ADAL(Active Directory Authentication Library)来获取访问...
在Java开发中,多文件上传是一项常见的功能,尤其在Web应用程序中,如用户需要上传图片、文档等附件。本示例提供了实现这一功能的具体代码和数据库相关资源,旨在帮助开发者快速构建自己的多文件上传功能。 首先,...
在Java开发中,文件批量上传是一项常见的功能,尤其在企业级应用中,用户可能需要上传大量数据或文件。本教程将介绍如何利用SWF(Simple Workflow)和EXT库来实现这一功能。SWF是一个用于创建富互联网应用程序的前端...
通过本文介绍的方法,我们可以有效地利用Apache Commons FileUpload组件实现在Java Web应用中的文件上传功能。相比于Smartupload等早期组件,Apache Commons FileUpload提供了更为强大的文件处理能力,并且拥有活跃...
在Java开发中,多文件上传是一项常见的功能,尤其在Web应用中,用户可能需要一次性上传多个文件,如图片、文档等。本知识点将详细介绍如何在Java中实现这一功能,以及结合Flash实现上传界面并显示上传进度条。 1. *...
本项目“JFrame文件上传Java_swing应用”是一个典型的Swing应用实例,包含了登录、文件上传、日期选择以及文件检索等常见功能,非常适合学习和自定义改造。 首先,我们来详细解析每个关键知识点: 1. **JFrame**:...
总之,Apache Commons IO和Apache Commons FileUpload是Java开发中处理文件上传不可或缺的工具。它们提供了丰富的功能,帮助开发者安全、高效地完成文件上传操作,同时也大大减少了处理文件上传时可能出现的问题。在...
【基于Java的企业级应用开发:文件上传和下载】 在企业级应用开发中,文件上传和下载是常见的功能需求。在Java环境下,我们可以利用...理解并熟练运用这些知识点,可以有效地实现在应用中添加文件上传和下载功能。
"JAVA开发文件上传源码"这个主题着重于使用POI技术处理Office文件,特别是Excel文件的上传。POI是Apache软件基金会的一个开源项目,提供了API用于读写Microsoft Office格式的文件,包括Excel、Word和PowerPoint等。 ...
在Java开发中,处理大文件上传是一项常见的任务,特别是在Web应用中。为了提供更好的用户体验,通常需要添加进度条功能,让用户了解文件上传的状态。本文将详细介绍如何使用Java实现大文件的上传并展示进度条,同时...
在Java开发中,文件上传是一项常见的任务,尤其是在构建Web应用时。"性能最好的Java文件上传组件"是指一种优化了上传速度和资源消耗的工具,它能够有效地处理大文件上传、多文件并发上传等问题,提高应用的用户体验...
在实际应用中,"sambatest"可能是一个包含示例代码的项目,包括了具体的Samba文件上传和下载功能。这个项目可以作为学习和参考,帮助理解如何将jcifs库集成到Java应用中,实现与Samba服务器的交互。 总的来说,Java...
在Java开发中,实现高性能的文件上传和下载是至关重要的技术环节,特别是在处理大量用户交互或者大数据量传输的场景下。本资料集主要探讨如何利用Java技术和相关工具库来优化这一过程,确保系统的稳定性和效率。 ...
在实际应用中,Java Web服务通常会采用诸如Apache CXF或Spring WS这样的框架来简化Web服务的开发、部署和测试。这些框架提供了丰富的工具和API,使得开发者可以更专注于业务逻辑,而不是底层的通信细节。 总的来说...
在Java开发中,大文件上传是一项常见的需求,尤其是在云存储、大数据传输以及互联网应用中。本项目"java实现大文件上传分片上传断点续传.zip"提供了一个基于SpringBoot框架的解决方案,它实现了大文件的分片上传和...
本源码项目是基于Java的FastDFS大文件上传与断点续传设计,包含36个文件,主要使用Java、JavaScript和CSS编程语言。该项目旨在实现h5与fastdfs之间的高性能断点续传、秒传、大文件上传以及使用redis文件锁。系统提供...
在Java编程中,文件上传是常见的任务之一,特别是...通过这个"java上传文件接口调用源码案例",我们可以学习到如何在Java环境中实现文件上传功能,这在开发Web应用、移动应用或者后端服务时都是一项基础且重要的技能。
在这个场景中,我们讨论的是如何使用Java的Socket来实现文件上传功能,即从客户端将文件发送到服务器,然后保存到服务器的数据库中。这个过程涉及到多个关键知识点,下面我们将详细探讨。 1. **Java Socket基础**:...
总的来说,这个Java Swing 文件批量上传DEMO涵盖了Java GUI编程、文件I/O、网络编程、多线程以及用户交互等多个方面,对于初学者来说,是一个很好的实践项目,可以帮助他们深入理解Java Swing的应用及文件上传的实现...
【Java + MySQL 文件上传器详解】 在IT领域,文件上传是一项常见的功能,广泛应用于各种Web应用,如社交媒体、云存储服务等。本项目名为“java+mysql文件上传器”,是基于Java编程语言和MySQL数据库实现的文件上传...