1.开发环境:

1)eclipse3.2+tomcat5.5;

2)创建dynamic web project;

3)下载:

Commons FileUpload 可以在http://jakarta.apache.org/commons/fileupload/下载

附加的Commons IO  可以在http://jakarta.apache.org/commons/io/下载

将commons-fileupload-1.2.1.jar commons-io-1.4.jar拷贝到WebContent/WEB-INF//lib目录;

2.前台:

<form method="post" enctype="multipart/form-data" action="upload.jsp" target="_blank">
<%-- 类型enctype用multipart/form-data,这样可以把文件中的数据作为流式数据上传,不管是什么文件类型,均可上传--%>
<table>
<tr><td>作品:<input type="file" name="upfile" size="50"></td></tr>
<tr><td>作者:<input type="text" name="author" size="22">
        标题:<input type="text" name="title" size="22">
        <input type="submit" name="submit" value="上 传"></td></tr>
<tr><td>备注:上传的jpg图片(显示扩展名为.jpg)大小不能超过4M!</td></tr>
</table>
</form>

3.后台:

1)引用:

<%@ page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%>
<%@ page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%>
<%@ page import="org.apache.commons.fileupload.*"%>

2)代码:

String id=null;//上传记录id
 String destinationfileName=null;//目标文件名
 String author=null;
 String title=null;
 int flag=0;//上传标志

String uploadPath =request.getSession().getServletContext().getRealPath("/")+"upload/";//图片上传路径  
    String tempPath = request.getSession().getServletContext().getRealPath("/")+"upload/temp/";//图片临时上传路径   
    String imagePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/"; //   图片网络相对路径 
    if(!new File(uploadPath).isDirectory()) new File(uploadPath).mkdirs();//   文件夹不存在就自动创建:
    if(!new File(tempPath).isDirectory())new File(tempPath).mkdirs(); 
    try {
     DiskFileUpload fu = new DiskFileUpload(); 
     fu.setSizeMax(4194304);//   设置最大文件尺寸,这里是4MB   
      fu.setSizeThreshold(4096);//   设置缓冲区大小,这里是4kb 
     fu.setRepositoryPath(tempPath);//   设置临时目录: 
      List fileItems = fu.parseRequest(request);//   得到所有的文件:
        Iterator i = fileItems.iterator();  
     while(i.hasNext()) {//   依次处理表单中每个域
            FileItem file = (FileItem)i.next();//   获得用户上传时文件名 
   if (file.isFormField()){  //获得文本域表单数据      
    if("author".equals(file.getFieldName())) author=codeToString(file.getString());
    if("title".equals(file.getFieldName())) title=codeToString(file.getString());
    continue;//非file域不处理
          }   
   String sourcefileName = file.getName();
      if( sourcefileName.endsWith(".jpg")){//生成上传后的文件名    
      Random rd = new Random();
      Calendar time = Calendar.getInstance();
      id=String.valueOf(time.get(Calendar.YEAR))
           + String.valueOf(time.get(Calendar.MONTH)+1)
            + String.valueOf(time.get(Calendar.DAY_OF_MONTH))
            + String.valueOf(time.get(Calendar.HOUR_OF_DAY))
            + String.valueOf(time.get(Calendar.MINUTE))
                                 + String.valueOf(time.get(Calendar.SECOND))
                                 + String.valueOf(rd.nextInt(100));
      destinationfileName=id+".jpg";
               File fTmp=new File(uploadPath+destinationfileName);
               file.write(fTmp);
               //out.print("<img src="+imagePath+"upload/"+destinationfileName+">");
      flag=1;//上传成功标志1
           }else{out.print("上传失败,只能上传jpg文件!"); }
       }
       //out.print("<script>location.href=/"demo.jsp/";</script>");
    }catch (IOException e) {out.print("上传失败!");}
    out.flush();
    out.close();

4.主要解决点:

1)问题:form设置enctype="multipart/form-data",request.getParameters函数无法获取表单域值;
    2)解决方案:

if (file.isFormField()){  //获得文本域表单数据      
         if("author".equals(file.getFieldName())) author=codeToString(file.getString());
        if("title".equals(file.getFieldName())) title=codeToString(file.getString());
    continue;//非file域不处理
        }

jsp图片上传(commons-fileupload组件)相关推荐

  1. 图片上传之fileupload

    最近学习了图片上传这个功能,这个功能比较常见,因此来整理一下,了解上传的基本原理,以便后期遇到图片上传功能可以很快上手. 要说图片上传,我们先来说一下图片上传后存储的两种方式:一种是将图片存储到数据库 ...

  2. jsp图片上传提交前,图片显示在页面上

    <divclass="upload_box"> <b>上传图片</b> <inputtype="file"name=& ...

  3. vue图片上传及压缩组件的封装

    vue图片上传及压缩组件的封装 源码地址 使用方法: 先去上面的链接把组件,复制到自己的components文件夹内 1.先下载 cnpm install compressorjs --save-de ...

  4. jsp 图片上传到oracle,jsp上传图片到数据库(oracle),并能在页面上显示解决办法

    jsp上传图片到数据库(oracle),并能在页面上显示解决办法 jsp上传图片到数据库(oracle),并能在页面上显示解决办法 日期:2014-05-18 浏览次数:20341 次 jsp上传图片 ...

  5. js+php在线截图 jquery fileupload.js,另一种图片上传 jquery.fileupload.js

    今天遇到另外一种上传图片方法 用jquery.fileupload.js 一个文件类型的元素 $("#fileupload").fileupload({ datatype:&quo ...

  6. java jsp 图片上传_jsp 图片上传代码

    这是一款由flash发送来的文件经过jsp上传并保存到服务器 response.setHeader("Content-Disposition","attachment;f ...

  7. 微信小程序组件库解析:图片上传与排序组件yImgPro

    yunUI是笔者开源的微信小程序功能库.目前其中包含了一些复杂的功能组件.方便使用.未来它将分为组件.样式.js三者合为一体,但分别提供. 本文所用代码皆来源于组件库中的yImgPro组件.详细代码可 ...

  8. kindeditor图片上传 struts2实现

    一.kindeditor以及struts2部署搭建不再赘述,如须要请參考kindeditor用法 Struts2框架搭建 二.kindeditor图片上传所依赖jar包在kindeditor\jsp\ ...

  9. JSP 文件上传下载系列之二[Commons fileUpload]

    前言 关于JSP 文件上传的基础和原理在系列一中有介绍到. 这里介绍一个很流行的组件commons fileupload,用来加速文件上传的开发. 官方的介绍是:  让添加强壮,高性能的文件到你的se ...

最新文章

  1. 封装fetch的使用(包含超时处理)
  2. B-TrunC标准成功加入ITU集群国际标准
  3. oracle判断数据表的字段内容是否为空
  4. Fraction+mysql_MySQL 数据类型总结
  5. 数据分析与挖掘实战-中医证型关联规则挖掘
  6. golang的new函数_new()和make()函数以及Golang中的示例
  7. Linux 市场估值将超 70 亿美元,主要原因是安全与开源需求
  8. cocos creator 多张图片 椭圆运动_信阳液位测量图片
  9. 排序算法合集 python
  10. 奥威尔:老大哥在看着你-软件公司十诫
  11. mapreduce 的partitioner,GroupComparator,KeyComparator,分布式缓存使用示例
  12. 淘宝天猫京东补流量主要采用的方式是什么呢
  13. tensorflow笔记之二十八——带掩码的损失函数
  14. 用户相关的常用搜索转化率指标
  15. GUI编程入门到游戏实战
  16. #泰坦尼克号幸存者预测
  17. OPC是什么意思?OPC Server 和OPC Client又有什么区别呢?
  18. android多媒体备忘录,基于android的多媒体备忘录的设计与实现
  19. php sendmail smtp,Sendmail基础配置和smtp命令学习
  20. gcc/g++ -O 优化选项说明

热门文章

  1. 大学计算机组成原理试题答案,计算机组成原理试题及答案(大学期末复习资料).doc...
  2. 纯c语言贪吃蛇,纯C语言贪吃蛇 求助
  3. 像素测量工具_翼眸科技利用无人机屋顶测量光伏行业应用
  4. jrebel热部署不起作用_5种SpringBoot热部署方式,你用哪种?
  5. windows 环境下python 安装 pypcap 并用pyinstaller打包到exe,解决DLL 加载失败。
  6. 判断checkbox是否选中并改变值
  7. Jsp之五 过滤器与监听器
  8. Java基础05 实施接口
  9. Mysql Replication 机制
  10. C# WebService发布与调用方法(转)