首先,我们创建一个新的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. IOS第六天(3:scrollView 图片轮播器)

    IOS第六天(3:scrollView 图片轮播器) #import "HMViewController.h" #define kImageCount 5 @interface H ...

  2. 【液晶模块系列基础视频】4.2.X-GUI图形界面库-画矩形函数简介

    [液晶模块系列基础视频]4.2.X-GUI图形界面库-画矩形函数简介 ============================== 技术论坛:http://www.eeschool.org 博客地址: ...

  3. OpenCV学习笔记——点击显示鼠标坐标

    点击显示鼠标显示坐标,再次点击时上一次的坐标的会消失…… #include<highgui.h> #include<cv.h> void on_mouse(int event, ...

  4. PHP 错误与异常 笔记与总结(4)通过 trigger_error 触发 PHP 错误

    [错误抑制符@] 除了 php.ini 中 error_reporting 和 display_errors 的设置.error_reporting() 函数.ini_set() 函数 外,还可以使用 ...

  5. Web 在线文件管理器学习笔记与总结(11)获取文件夹信息 (12)返回上一级操作

    (11)获取文件夹信息 文件夹没有修改操作. index.php: <?php require 'dir.func.php'; require 'file.func.php'; require ...

  6. eclipse编译异常修正:the project cannot be built until its prerequisite...

    close错误的project,重新open , 再 clean下 .

  7. 撑起大规模PHP网站的开源工具

    撑起大规模PHP网站的开源工具 百万级PHP站点Poppen.de的架构 在 2011年11月27日 那天写的     已经有 3957 次阅读了 感谢 参考或原文   服务器君一共花费了54.510 ...

  8. linux下svn的co如何排除目录

    某些原因想在svn co的时候排除某些目录,可以绕个圈子,分三步来完成: co外层目录: svn checkout --depth empty $URL [$LOCATION] 完成之后,会有一个只包 ...

  9. Memcached原理深度分析详解

    Memcached是 danga.com(运营LiveJournal的技术团队)开发的一套分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升性能.关于这个东 西,相信很多人都用过,本文意在通 ...

  10. JAVA分支语句例题

    1.输入年份判断是闰年还是平年? System.out.println("请输入年份:"); Scanner sc=new Scanner(System.in); String s ...