最进上网找了个jsp文件上传的类。拿来大家一同讨论下。
import java.io.*;
import java.util.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletInputStream;
public class UpLoadBean {
private String SavePath = null;
private String FileName = null;
private String Sperator = null;
private String ErrMsg = "正常返回";
private byte[] BT = new byte[4096];
private byte[] preBT = new byte[4096];
private int t = -1;
private long FileSize = -1;
private boolean UserDefineFileName = false;
/////////////////////////////////////////////////
public UpLoadBean () {
FileName = bringFileName ();
}
public UpLoadBean (String savepath) {
SavePath = savepath;
FileName = bringFileName ();
}
/////////////////////////////////////////////////
// 文件名信息
private String bringFileName () {
Calendar dt = Calendar.getInstance ();
String str = "" + dt.get (Calendar.YEAR) + dt.get (Calendar.MONTH) + dt.get (Calendar.DAY_OF_MONTH);
str = str + dt.get (Calendar.HOUR) + dt.get (Calendar.MINUTE) + dt.get (Calendar.SECOND);
return str;
}
public void setFileName (String filename) {
FileName = filename;
UserDefineFileName = true;
}
public String getFileName () {
return FileName;
}
/////////////////////////////////////////////////
// 上传文件主程序
public boolean UpLoad (HttpServletRequest request,String url) throws Exception {
if (SavePath == null) {
setErrorMessage (url);//"未设置保存上传文件的路径"
return false;
}
request.setCharacterEncoding("utf-8");
ServletInputStream in = request.getInputStream ();
////////////////////////////////////////////
// 获取得一行的分隔标志
t = in.readLine (BT, 0, BT.length);
if (t != -1) {
Sperator = new String (BT, 0, t);
Sperator = Sperator.substring (0, 28);
t = -1;
}
////////////////////////////////////////////
// 取扩展名并设定文件全名
do {
t = in.readLine (BT, 0, BT.length);
String s = new String (BT, 0, t);
int index = s.indexOf ("filename=\"");
if (index != -1) {
s = s.substring (index + 10);
index = s.indexOf ("\"");
s = s.substring (0, index);
index = s.lastIndexOf (".");
if (!UserDefineFileName) {
FileName = FileName + s.substring (index); // 设定文件全名
}
t = -1;
}
} while (t != -1);
////////////////////////////////////////////
// 取文件内容
FileOutputStream out = new FileOutputStream (SavePath + "\\" + FileName);
t = in.readLine (BT, 0, BT.length);
String s = new String (BT, 0, t);
int i = s.indexOf ("Content-Type:");
if (i == -1) {
setErrorMessage ("上传的不是文件");
return false;
} else {
in.readLine (BT, 0, BT.length); // 去掉一个空行
t = -1;
}
boolean state = true;
long trancsize = 0;
try {
t = in.readLine (BT, 0, BT.length);
while (t != -1) {
s = new String (BT, 0, t);
if (s.length () > 28) {
s = s.substring (0, 28);
if (s.equals (Sperator)) {
break;
}
}
/*
if (BT[0] == 45 && BT[1] == 45 && BT[2] == 45 && BT[3] == 45 && BT[4] == 45) {
break;
}
*/
if (FileSize != -1) {
if (trancsize >= FileSize) {
throw new Exception ("上传文件太大");
}
}
out.write (BT, 0, t);
trancsize += t;
t = in.readLine (BT, 0, BT.length);
}
} catch (Exception e) {
state = false;
out.close ();
setErrorMessage (e.getMessage ());
File tmp = new File (SavePath, FileName);
if (!tmp.delete()) {
setErrorMessage (e.getMessage () + ",清除未完成");
}
} finally {
if (state) {
out.close ();
}
return state;
}
}
/////////////////////////////////////////////////
// 上传文件错误信息
public void setErrorMessage (String errormessage) {
ErrMsg = errormessage;
}
public String getErrorMessage () {
return ErrMsg;
}
/////////////////////////////////////////////////
// 文件大小信息
public void setFileSize (long size) {
FileSize = size;
}
public long getFileSize () {
return FileSize;
}
}// end class
分享到:
相关推荐
以上是关于JSP文件上传的基本概念和实现步骤。在实际开发中,应结合具体需求,如文件存储策略、权限控制等,进行更深入的设计和实现。同时,随着技术的发展,现代Web框架如Spring Boot提供了更高级别的抽象,简化了...
当文件上传至服务器,你需要指定一个物理路径来保存这些文件。例如,可以将文件保存在服务器的硬盘上。在Java中,你可以使用`java.io.File`类来操作这些文件,如创建、读取、写入等。在处理中文文件名时,需要注意...
"JSP多文件上传"是一个常见的需求,特别是在文件分享、在线教育或文档管理等场景。这个功能允许用户一次性选择并上传多个文件,提高了用户体验,减少了多次点击和等待时间。 实现JSP多文件上传,我们需要了解以下几...
"JSP文件上传 支持进度条显示"这个项目是针对JSP环境设计的一个AJAX Web上传程序,它允许用户上传大文件(如单个文件100M),并具有文件上传进度条的可视化功能。以下将详细解析这个项目的知识点: 1. **JSP(Java...
在上面的代码中,我们可以看到一个简单的 JSP 文件上传实例。首先,在 index.html 文件中,我们使用了 HTML 表单来上传文件,并将其提交到 do_upload.jsp 文件中。 在 do_upload.jsp 文件中,我们使用了 Java 语言...
一、JSP文件上传的基本步骤 1. 在HTML表单中添加文件上传控件,使用input type="file"控件。 2. 在FORM标签中添加ENCTYPE="multipart/form-data"属性,以便将文件上传到服务器。 3. 在服务器端使用Java代码处理上传...
JSP页面通常不直接处理表单提交,而是通过一个关联的Servlet来接收并处理这些数据。 在Servlet中,我们可以使用Apache Commons FileUpload库来解析多部分请求。该库提供API来提取文件内容并保存到服务器的指定位置...
"MultifileUploadDemo"是一个很好的学习资源,它展示了如何结合Flash和JSP实现多文件上传功能。通过深入研究这个示例,开发者可以掌握如何处理复杂的文件上传需求,提高Web应用的功能性和用户体验。同时,随着HTML5...
通过上述步骤,你可以在JSP中实现一个简单的文件上传功能,同时能够有效地处理上传的文件内容。记住,尽管这个例子简单明了,但在实际开发中,你可能需要结合更多的安全措施和技术来创建一个更健壮的文件上传系统。
总结来说,JSP文件上传下载是通过SmartUpload库实现的,它简化了文件操作的复杂性,使得开发者能更专注于业务逻辑。通过理解和实践SmartUpload的用法,你将能够为你的Web应用添加这一关键功能。同时,理解文件上传...
综上所述,"jsp文件上传源码"提供了一个基础的JSP文件上传教程,通过这个项目,开发者可以学习到如何在Java Web环境中处理文件上传,理解`multipart/form-data`编码的工作原理,以及如何使用Servlet和Apache Commons...
【jsp文件上传下载】是一个常见的Web开发功能,用于在服务器端处理用户上传的文件并提供文件下载服务。在Java Web环境中,JSP(JavaServer Pages)是常用的动态网页技术,结合Servlet可以实现复杂的文件交互操作。 ...
在MyEclipse这样的集成开发环境中,开发和调试JSP文件上传下载功能非常便捷。"updowntest"可能是一个项目或文件夹名称,里面可能包含了实现这些功能的JSP页面、Servlet类以及相关的配置文件。 总结来说,这个示例...
总的来说,理解并掌握JSP文件上传所需的jar包以及如何使用它们是Java Web开发中的一个重要技能。正确配置和使用这些库可以让你的文件上传功能更加健壮、安全和高效。在实践中,还需要注意处理可能出现的异常,如文件...
1. 链接生成:在JSP中,创建一个链接让用户下载文件,链接的URL应指向处理下载请求的Servlet或JSP。例如,可以创建一个HTML的`<a>`标签,其`href`属性指向下载地址。 2. 处理下载:在对应的Servlet或JSP中,读取...
自己给修改了一下,做出了一个jsp版的多文件上传功能,客户需要进行多个文件上传:本程序就两个jsp文件,jar包自行下载,tepl.jsp运行后: 点击【增加】后,系统将增加一行上传文件的选择 点击【删除】后,系统...
接下来,我们需要创建一个 Web 项目来实现文件上传和下载功能。在这个项目中,我们将创建一个名为 fileUpload 的 Web 项目。 将 Commons FileUpload 和 Commons IO 库 copy 到 WebRoot 目录下的 Web-INF 目录下的 ...
在网络上找到的,纯JSP实现的文件上传程序,支持多文件的上传,例子是多文件的上传,稍微修改就可以变成单文件的上传或者更多文件的上传,控制成需要扩展名的文件上传,指定大小的文件上传等。程序目前上传文件存储...
3. **响应前端**:处理完文件后,JSP需要返回一个响应,告诉前端文件上传的结果。 ```jsp response.setContentType("text/html;charset=UTF-8"); PrintWriter writer = response.getWriter(); writer.println("文件...
【标签】"jsp文件上传"和"jsp多个文件上传"是两个关键的技术标签。JSP文件上传涉及到Servlet和HTTP协议的理解,因为JSP通常与后台的Servlet配合工作,处理客户端发送的POST请求,接收上传的文件数据。而"多个文件...