JAVA实现文件上传

 

代码如下:

还要两个jar包
      前台页面:

01 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
02 <%
03 String path = request.getContextPath();
04 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
05 %>
06  
07  
08  
09    
10     <base href="<%=basePath%>">
11      
12     <title>My JSP ‘index.jsp‘ starting page</title>
13     <meta http-equiv="pragma" content="no-cache">
14     <meta http-equiv="cache-control" content="no-cache">
15     <meta http-equiv="expires" content="0">   
16     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
17     <meta http-equiv="description" content="This is my page">
18     <!--
19     <link rel="stylesheet" type="text/css" href="styles.css">
20     -->
21    
22    
23     <!--
24       action:请求地址
25       method:请求方式  get post
26       enctype:multipart/form-data 以二进制的形式向服务器传递参数
27      -->
28       <form action="fileUp.do" method="post" enctype="multipart/form-data">
29          <table>
30             <tbody><tr>
31                <td>请选择要上传的文件:</td>
32                <td><input type="file" name="file"></td>
33             </tr>
34            <tr>
35               <td><input type="submit" value="开始上传"></td>
36            </tr>
37          </tbody></table>
38      </form>     
39   

后端代码:

01 package com.zengda;
02  
03 import java.io.File;
04 import java.io.IOException;
05 import java.io.PrintWriter;
06 import java.util.Iterator;
07 import java.util.List;
08  
09 import javax.servlet.http.HttpServlet;
10 import javax.servlet.http.HttpServletRequest;
11 import javax.servlet.http.HttpServletResponse;
12  
13 import org.apache.commons.fileupload.FileItem;
14 import org.apache.commons.fileupload.FileUploadException;
15 import org.apache.commons.fileupload.disk.DiskFileItemFactory;
16 import org.apache.commons.fileupload.servlet.ServletFileUpload;
17  
18 public class FileUpServlet extends HttpServlet{
19     //重写HttpServlet里面的service方法
20     public void service(HttpServletRequest request,HttpServletResponse response)
21        throws IOException{
22         request.setCharacterEncoding("UTF-8");//设置编码
23         response.setCharacterEncoding("GBK");
24         //基于磁盘文件项目创建一个工厂对象
25         DiskFileItemFactory factory  = new DiskFileItemFactory();
26         //创建一个新的文件上传对象
27         ServletFileUpload upload = new ServletFileUpload(factory);
28         try {
29             //解析上传请求
30             List items = upload.parseRequest(request);
31             Iterator itr = items.iterator();//枚举方法 返回迭代器
32             while (itr.hasNext()) {//如果迭代器有数据 返回true 没数据返回false
33                  FileItem fileItem = (FileItem)itr.next();//获取FileItem对象
34                  if(!fileItem.isFormField()){//判断是否为文件上传域 如果是文件上传域返回false  不是就返回true
35                     long fileSize =  fileItem.getSize();//获取文件的大小
36                     String fileName = fileItem.getName();//获取上传文件的名字(真实文件)
37                     //构建一个临时对象,将文件暂时的保存在服务器的内存里面
38                     File tempFile = new File(fileName);
39                     //根据servlet上下文获取上传路径
40                     String updatePath =  this.getServletContext().getRealPath("/upload");
41                     //获取根目录对应的真实物理路径
42                     File file = new File(updatePath,tempFile.getName());
43                     //将文件上传
44                     fileItem.write(file);
45                     PrintWriter out = response.getWriter();//获取输出流
46                     out.print("文件上传成功! ");
47                     out.print("上传路径为: "+updatePath);
48                     out.print("文件名: "+fileName);
49                     out.print("文件的大小为: "+fileSize+" KB");
50                  }
51             }
52         catch (FileUploadException e) {
53             e.printStackTrace();
54         catch (Exception e) {
55             e.printStackTrace();
56         }
57          
58     }
59 }

web.xml:

01 <!--?xml version="1.0" encoding="UTF-8"?-->
02 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
03   <display-name>FileUp</display-name>
04   <welcome-file-list>
05     <welcome-file>index.html</welcome-file>
06     <welcome-file>index.htm</welcome-file>
07     <welcome-file>index.jsp</welcome-file>
08     <welcome-file>default.html</welcome-file>
09     <welcome-file>default.htm</welcome-file>
10     <welcome-file>default.jsp</welcome-file>
11   </welcome-file-list>
12    
13   <!-- 定义一个servlet -->
14   <servlet>
15      <servlet-name>file</servlet-name>
16      <servlet-class>com.zengda.FileUpServlet</servlet-class>
17   </servlet>
18    
19   <!-- 配置访问路径 -->
20   <servlet-mapping>
21      <servlet-name>file</servlet-name>
22      <url-pattern>/fileUp.do</url-pattern>
23   </servlet-mapping>
24 </web-app>
时间: 2024-12-13 22:43:43

JAVA实现文件上传的相关文章

java多线程文件上传服务器

描述: (1)jdk自带线程池见 JDK自带线程池配置 (2)此上传文件服务器中上传文件的后缀名通过第一段缓冲字符流传递,此缓冲字符流大小为1024,在文件接收端以1024接收.处理. 1.服务器代码如下(使用jdk自带线程池): 1 /** 2 * 服务器处理多线程问题 3 * 4 * 1.因为服务器是要很多人访问的,因此里面一定要用多线程来处理,不然只能一个人一个人的访问,那还叫Y啥服务器 5 * 6 * 2,拿上面这个文件上传的例子来说,它将每个连接它的用户封装到线程里面去,把用户要执行的

Java Socket文件上传

客户端: import java.io.FileInputStream; import java.net.Socket; /** * Created by 290248126 on 14-5-11. */ public class Client { public static void main(String[] args) throws Exception { FileInputStream fileInputStream = new FileInputStream("e:/1.png&quo

Java Web文件上传

一. Java Web文件上传需要借助一些第三方库,常用的是借助Apache的包,有两个: commons-fileupload commons-io 二.前端代码示例: <form method="post" id="uploadApkForm" action="uploadapk" enctype="multipart/form-data"> <p> 文件:<input name="

java web 文件上传下载

文件上传下载案例: 首先是此案例工程的目录结构: 处理上传: FileUploadServlet.java 1 package fnz.fileUploadTest; 2 3 import java.io.File; 4 import java.io.IOException; 5 import java.io.InputStream; 6 import java.io.PrintWriter; 7 import java.text.SimpleDateFormat; 8 import java.

html5+java大文件上传代码

<body> <input id="fileid" type="file" accept="video/*;capture=camera" onchange="onfile(this)"> <input id="btn" type="button" value="提交"> <script type="text/jav

HTTP POST请求报文格式分析与Java实现文件上传

时间 2014-12-11 12:41:43  CSDN博客 原文  http://blog.csdn.net/bboyfeiyu/article/details/41863951 主题 HTTPHttpComponents 在开发中,我们使用的比较多的HTTP请求方式基本上就是GET.POST.其中GET用于从服务器获取数据,POST主要用于向服务器提交一些表单数据,例如文件上传等.而我们在使用HTTP请求时中遇到的比较麻烦的事情就是构造文件上传的HTTP报文格式,这个格式虽说也比较简单,但也

Java实现文件上传(验证文件大小、文件类型)

文件上传是每个java开发者必须掌握的.文件上传有很多种实现方式,但其实也大同小异.笔人在这里为大家介绍一种我习惯用的,上传文件的方式.大家先看代码,最后我会分享我的源码给大家. 1.首先要准备一下需要用到的jar包. commons-fileupload-1.2.1.jar -commons-io-1.4.jar 可以从[(http://commons.apache.org/)]下载,当然,我的项目源码里也有 然后开始写代码. public static String fileUpload(H

【FTP】java FTPClient 文件上传内容为空,文件大小为0

问题:如题所述,使用FTPClient上传至FTP服务器, 表现如下:①文件大小为0 ②上传很小的文件,但是要花费很长的时间,20K要花费2分钟甚至更久 ③没有任何的报错,没有任何的乱码 解决方法: [参考:http://blog.csdn.net/tengdazhang770960436/article/details/43274001] 如果你在本地的 Java 项目里面去用 FtpClient 上传文件,然后虽然文件上传上去了,但是文件里面没有内容,那么这说明你的机器防火墙设置有问题如下图

java spring 文件上传监听 控制条显示

1.        接管CommonsMultipartResolver,重写针对文件上传的请求. package com.sinosoft.amoeba.fileupload; import com.sinosoft.amoeba.fileupload.listener.FileUploadProgressListener;import org.apache.commons.fileupload.*;import org.apache.commons.fileupload.servlet.Se