<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page import="java.net.*" %>
<%@ page import="java.io.*" %>
<html>
<head>
<title>
receieve
</title>
</head>
<body bgcolor="#ffffff">
<br>
<%
String tempFile = new String("mytempfile");
File temp = new File("D:"+File.separator, tempFile);
FileOutputStream o = new FileOutputStream(temp);
InputStream fileSource = null;
fileSource = request.getInputStream();
byte[] b = new byte[8192];
int n;
while((n = fileSource.read(b)) != -1) {
o.write(b, 0, n);
o.flush();
}
fileSource.close();
o.close();
RandomAccessFile rf = new RandomAccessFile(temp, "r");
rf.readLine();
String FilePath = rf.readLine();
int position = FilePath.lastIndexOf('\\');
String filename = new String(FilePath.substring(position+1,FilePath.length()-1).getBytes("ISO-8859-1"),
"UTF-8");
rf.seek(0);
long forthEnterPosition = 0;
int forth = 1;
while((n = rf.readByte()) != -1 && (forth <= 4)) {
if(n == 10) {
forthEnterPosition = rf.getFilePointer();
forth++;
}
}
File FileUploadDir = new File("E:\\Leiyonghui\\Jspfirst\\Jspfirst\\Jspfirst\\WebModule1"+File.separator, "Browser");
FileUploadDir.mkdir();
File savefile = new File("E:\\Leiyonghui\\Jspfirst\\Jspfirst\\Jspfirst\\WebModule1"+File.separator+"Browser", filename);
RandomAccessFile rf2 = new RandomAccessFile(savefile, "rw");
rf.seek(rf.length());
long endPosition = rf.getFilePointer();
int j = 1;
while((endPosition>=0) && (j<=2)) {
endPosition--;
rf.seek(endPosition);
if(rf.readByte() == 10)
j++;
}
rf.seek(forthEnterPosition);
long startPoint = rf.getFilePointer();
while(startPoint + 8192L <= endPosition-1) {
n = rf.read(b);
startPoint = rf.getFilePointer();
rf2.write(b, 0, n);
}
while(startPoint < endPosition-1) {
rf2.write(rf.readByte());
startPoint = rf.getFilePointer();
}
rf2.close();
rf.close();
temp.delete();
out.println("<h3>file: " + filename + " succeed to upload!</h3>");
%>
</html>
java jsp实现文件上传



在Java Web开发中,文件上传是一项常见的功能,用于允许用户从他们的计算机上传文件到服务器。在本教程中,我们将探讨如何使用Java Servlet和JSP(JavaServer Pages)来实现一个简单的文件上传功能。 我们需要了解JSP和Servlet的关系。JSP是用于创建动态网页的Java技术,它将HTML代码和Java代码结合在一起。而Servlet是Java服务器端的程序,负责处理HTTP请求和响应。在文件上传的场景中,通常由JSP页面接收用户界面的输入,然后通过后台Servlet处理文件上传的实际操作。 实现文件上传,我们需要以下几个步骤: 1. 创建JSP页面: 在JSP页面中,我们需要一个表单让用户选择要上传的文件。表单应该包含`enctype="multipart/form-data"`属性,因为这是处理文件上传的必需设置。例如: ```html <form action="UploadServlet" method="post" enctype="multipart/form-data"> 选择文件:<input type="file" name="fileToUpload" id="fileToUpload"> <input type="submit" value="上传文件" name="submit"> </form> ``` 2. 编写Servlet: 我们需要创建一个Servlet来处理文件上传。在Servlet中,我们将使用Apache Commons FileUpload库来解析多部分请求并获取文件。确保在项目中添加FileUpload库的依赖。然后,创建一个doPost方法,如下所示: ```java protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { DiskFileItemFactory factory = new DiskFileItemFactory(); ServletContext context = this.getServletContext(); File repository = (File) context.getAttribute("javax.servlet.context.tempdir"); factory.setRepository(repository); // 创建文件上传处理器 ServletFileUpload upload = new ServletFileUpload(factory); try { List<FileItem> items = upload.parseRequest(request); for (FileItem item : items) { if (!item.isFormField()) { String fileName = new File(item.getName()).getName(); String savePath = context.getRealPath("/") + "/uploads/" + fileName; item.write(new File(savePath)); out.println("文件 " + fileName + " 上传成功!"); } } } catch (Exception e) { out.println("文件上传失败:" + e.getMessage()); } } ``` 3. 配置Servlet: 在web.xml配置文件中,我们需要定义Servlet,并将表单中的action与Servlet的URL映射。例如: ```xml <servlet> <servlet-name>UploadServlet</servlet-name> <servlet-class>com.yourcompany.UploadServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>UploadServlet</servlet-name> <url-pattern>/UploadServlet</url-pattern> </servlet-mapping> ``` 4. 处理文件保存位置: 在Servlet代码中,我们为上传的文件创建了一个保存路径。确保服务器有写入该目录的权限,并且考虑文件安全和存储限制。 5. 错误处理: 为了提高用户体验,你需要对可能出现的错误进行处理,比如文件大小超出限制、文件类型不被接受等。 总结,通过上述步骤,我们已经构建了一个简单的Java JSP文件上传系统。这只是一个基础示例,实际项目中可能需要更复杂的验证、权限控制以及错误处理机制。理解这些基本概念后,你可以进一步扩展和优化这个功能,以适应更复杂的业务需求。
































- 1

- #完美解决问题
- #运行顺畅
- #内容详尽
- #全网独家
- #注释完整
- aaa3796587712013-05-28可以使用 一般

- 粉丝: 0
- 资源: 2
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源


