首先,我们创建一个新的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. C++中函数中没写返回值会怎么样?

    先看这一段代码: /* P125 清单7.15 使用迭代求第N个Fibonacci数 */ #include <iostream> int fib(int position); int m ...

  2. Leetcode | Valid Sudoku & Sudoku Solver

    判断valid,没有更好的方法,只能brute force. class Solution { public: bool isValidSudoku(vector<vector<char& ...

  3. 如何进行SCCM中客户端记录信息维护

    SCCM 部署完毕之后,不久我们就会发现客户端代理状态,因为重装系统,非正常的退域,长时间不开机,导致客户端状态有不可用的,有过期的,重复的记录很多.当然我们可以手动的快速删除重复的记录,那么怎么能做 ...

  4. 分布式架构高可用架构篇_02_activemq高可用集群(zookeeper+leveldb)安装、配置、高可用测试

    参考: 龙果学院http://www.roncoo.com/share.html?hamc=hLPG8QsaaWVOl2Z76wpJHp3JBbZZF%2Bywm5vEfPp9LbLkAjAnB%2B ...

  5. nodejs:本地文件夹http服务器http-server

    一.已经安装nodejs的电脑,有一个方便通过http访问本地文件夹.文件夹服务器 static files over HTTP,并不是我们平常说的node那个web服务器哦 二.好处 可以方便实现跨 ...

  6. 页面静态化3 --- (伪静态+ob缓存)实现优化

    要求:使用伪静态完成简单的新闻查询! 伪静态是站在SEO的角度来看的,他对应的页面不是真正存在的(而真静态的页面是事先生成的),而是每次查询数据库得到的信息!

  7. 【转载】loadrunner使用system()函数调用Tesseract-OCR识别验证码遇到的问题

    俗话说前人栽树,后人乘凉,此话一点不假,结合云层的一遍文章:http://bbs.51testing.com/thread-533920-1-1.html,知道还有一个Tesseract-OCR可以用 ...

  8. Fingerprinting

    https://wiki.mozilla.org/Fingerprinting Fingerprinting   Contents 1 Overview 2 Data 2.1 Plugins 2.2 ...

  9. <from>;<input>;readonly:只读;disabled:不可用;checked:用来做选中;selected:用在下拉列表中,设置那一项被选中

    表单元素: ①②③④⑤⑥⑦★ 一.<from> 1. 代表表单 2 . action:提交为哪个页面 method:①  get :显示提交,由长度限制 ②  post: 隐藏提交 二.文 ...

  10. os相关方法总结

    __file__表示当前文件 os.path.dirname表示当前文件所在路径的父路径 os.pardir表示当前文件名 os.path.join表示合并 os.path.abspath表示绝对路径