首先,我们创建一个新的web工程,在工程的WebRoot目录下新建一个upload文件夹,这样当我们将该工程部署到服务器上时,服务器便也生成个upload文件夹,用来存放上传的资源。

然后,在WebRoot目录下新建一个jsp文件,主要实现的作用就是选择上传的文件,提交至servlet来进行处理

详细代码如下:一个form将文件信息通过post方式传送到指定的servlet

<%@ page language="java" contentType="text/html; charset=GBK"
 pageEncoding="GBK"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
  <form action="UpLoad" method="post" enctype="multipart/form-data"> 
     请选择上传的图片或文件:<input type="file" name="fileName"/><input type="submit" value="上传"/> 
    </form> 
</body>
</html>

可以看到,我们将数据提交到工程下的upload/UpLoad。

之后,我们就来编写这个servlet——UpLoad.java

package ayds;

import java.io.File;
import java.io.IOException;
import java.util.List;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class UpLoad extends HttpServlet {

/**
  *
  */
 private static final long serialVersionUID = 1L;
 public void doGet(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {
doPost(request, response);
}
 @SuppressWarnings("unchecked") 
    @Override 
   
//    protected void service(HttpServletRequest req, HttpServletResponse resp) 
//            throws ServletException, IOException { 
  public void doPost(HttpServletRequest req, HttpServletResponse resp)
 throws ServletException, IOException {
        req.setCharacterEncoding("GBK"); 
        resp.setContentType("text/html;charset=GBK"); 
        //为解析类提供配置信息 
        DiskFileItemFactory factory = new DiskFileItemFactory(); 
        //创建解析类的实例 
        ServletFileUpload sfu = new ServletFileUpload(factory); 
        //开始解析 
        sfu.setSizeMax(1024*400); 
        //每个表单域中数据会封装到一个对应的FileItem对象上 
        try { 
            List<FileItem> items = sfu.parseRequest(req); 
            //区分表单域 
            for (int i = 0; i < items.size(); i++) { 
                FileItem item = items.get(i); 
                //isFormField为true,表示这不是文件上传表单域 
                if(!item.isFormField()){ 
                    ServletContext sctx = getServletContext(); 
                    //获得存放文件的物理路径 
                    //upload下的某个文件夹   得到当前在线的用户  找到对应的文件夹 
                     
                    String path = sctx.getRealPath("/upload"); 
                    System.out.println("path=="+path); 
                    //获得文件名 
                    String fileName = item.getName(); 
                    System.out.println("fileName=="+fileName); 
                    //该方法在某些平台(操作系统),会返回路径+文件名 
//                    fileName = fileName.substring(fileName.lastIndexOf("/")+1);
                    fileName = fileName.substring(fileName.lastIndexOf("\\")+1);
                    System.out.println("fileName=="+fileName);
                    File file = new File(path+"\\"+fileName); 
                    if(!file.exists()){ 
                        item.write(file); 
                        //将上传图片的名字记录到数据库中 
                     int j=Dao.insertImg(fileName, "无");
                          if(j==1){
                        resp.sendRedirect("index2.jsp");
                          }
                    } 
                } 
            } 
        } catch (Exception e) { 
            e.printStackTrace(); 
        } 
         
    }

}

Servlet+Jsp实现图片或文件的上传功能的更多相关文章

  1. AFNetworking 文件上传Data,File图片,文件等上传

    一:AFNetworking的文件上传: 主要几个以下类似 - (BOOL)appendPartWithFileURL:(NSURL *)fileURL name:(NSString *)name e ...

  2. jsp实现浏览器大文件分片上传

    在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 先说下要求: PC端全平台支持,要求支持Windows,Mac,Linux 支持所 ...

  3. 关于在Struts2框架下实现文件的上传功能

    struts2的配置过程 (1)在项目中加入jar包 (2)web.xml中filter(过滤器)的配置 <?xml version="1.0" encoding=" ...

  4. asp.net 如何实现大文件断点上传功能?

    之前仿造uploadify写了一个HTML5版的文件上传插件,没看过的朋友可以点此先看一下~得到了不少朋友的好评,我自己也用在了项目中,不论是用户头像上传,还是各种媒体文件的上传,以及各种个性的业务需 ...

  5. 【Android】图片(文件)上传的请求分析结构

    怎么在android中上传文件,即怎么用Java向服务器上传文件.上传图片,这是个老问题了,在网上能搜到现成的代码,很多朋友用起来也比较熟了,但是为什么这么写,可能很多朋友并不清楚,这篇文章就来分析一 ...

  6. h5实现本地图片或文件的上传

    首先放一个今天学到的小demo: <!DOCTYPE html> <html lang="en"> <head> <meta charse ...

  7. PHP实现图片(文件)上传

    这几天整理做过的php项目,感觉这个经常会用到,传上来共享一下咯 首先,前端界面 1.表单的首行需要加上enctype="multipart/form-data",需要上传的图片必 ...

  8. html5+php实现文件拖动上传功能

    界面样式我是参考了一个国外的相册网站,改动不大,只是把鸟语转换成中文,以及上传时的样式也进行了改动,之所以选这个的原因就是,我很容易做扩展,它支持3种方式添加图片,一种拖拽上传,一种常规的选择文件上传 ...

  9. Android实战简易教程-第二十八枪(基于Bmob实现头像图片设置和网络上传功能!)

    上一篇我们介绍了怎样由uri转换成String ,本文就用到了上篇文章的方法.以下我们介绍一下怎样设置头像后将头像图片上传到云端的方法,本文基于Bmob提供的服务. 看一下代码:(布局文件和前两篇文章 ...

随机推荐

  1. 对于flat_interface与public_interface的理解

    对于这两个interface含义的理解一波三折,下面我把各种理解都记录下来.   2014-9-23   #可以把flat_interface理解为Openstack整套生态系统内部的网络接口,内部各 ...

  2. gridview header增加排序图标

    /* add sorting icons to gridview sort links */a.asc:after, a.desc:after { position: relative; top: 1 ...

  3. CodeForces 86D Powerful array(莫队+优化)

    D. Powerful array time limit per test 5 seconds memory limit per test 256 megabytes input standard i ...

  4. centos最小安装,之后想安装x-windows,安装图形界面 startx

    yum groupinstall "Desktop"yum groupinstall "X Window System"安装完成之后,reboot一下,不然硬件 ...

  5. Tree Context Menu

    Right click on a node to display context menu.   My Documents Photos Program Files Intel Java Micros ...

  6. PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [6] 版本升级接口开发

    判定 app 是否需要加密:通过 app 表中的 status 字段来判定,加密的字符串为 app 表中的 key 字段. 在获取的客户端和服务器端(数据库表中相应字段)的版本号不一致时,返回 dat ...

  7. communicate with other processes, regardless of where they are running

    Advanced Programming in the UNIX Environment Third Edition   In the previous chapter, we looked at p ...

  8. 汇总10.4版本ArcGIS Server与ArcMap 安装+SDE+注册数据源(非破解)

    文档参考了Server技术支持部各位前辈的总结文档. win10 + Server 10.4 +  ArcMap 10.4 + Oracle instant client (32位 和 64位) 安装 ...

  9. setattribute兼容

    var spanElement = document.getElementById("mySpan"); spanElement.style.cssText = "fon ...

  10. 用正则验证字符串格式,形如:A)XXX B)XXXX C)XXX

    今天遇到个小功能,要验证某个英文选项是否正确,例如:A)accumulate B)circling C)communities  D)competition  E)domestic F)financi ...