Java图片上传

做了一个图片上传的例子,下面请看代码:

Servlet代码示例:

public class Demo extends HttpServlet {

         private static final long serialVersionUID = 1L;

         @Override

         protected void doGet(HttpServletRequest req, HttpServletResponse resp)

                            throws ServletException, IOException {

                   doPost(req, resp);

         }

         @Override

         protected void doPost(HttpServletRequest req, HttpServletResponse resp)

                            throws ServletException, IOException {

                   //创建磁盘工厂

                    DiskFileItemFactory dff = new DiskFileItemFactory();

                    //创建处理工具

         ServletFileUpload sfu = new ServletFileUpload(dff);

         //.设置上传文件大小:upload.setFileSizeMax(3145728);可设置可不设置

         //接收全部内容

         List<FileItem> items = null;

                   try {

                            items = sfu.parseRequest(req);//解析表单中的每一个表单项,封装成FileItem对象,

                            List方式返回

                   } catch (FileUploadException e) {

                            e.printStackTrace();

                   }

                   //循环list

                   for (FileItem fileItem : items) {

                               if (!fileItem.isFormField()) {// 判断不是普通文本

                             String fileName = new File(fileItem.getName()).getName();//获取文件名

                             File pat=new File("E:\\tupianshangchuan");

                             BufferedImage bi = ImageIO.read(fileItem.getInputStream());

        //如果binull值,则表示fileItem不是图片,这样子写可以避免有些不是图片的

文件把后缀名修改成图片的后缀名

                                     if (bi==(null)) {//不能用equals,会报错,equals的使用方如果为null会报错

                                               //不是图片就输出上传的不是图片

                                               System.out.println("上传的不是图片");

                                     }else{

                                               if (!pat.exists()) {//判文件是否存在

pat.mkdirs();//mkdir创建一级文件夹,也就是只能创建一个文件夹;mkdirs创建多级文件夹,也就是路径不存在的文件夹都可以创建

                                                        }

                                     File storeFile = new File(pat,fileName);//拼接路径和名字

                                    try {

                                               fileItem.write(storeFile);//将获取的文件流写入给定的storeFile文件中

                                               } catch (Exception e) {

                                                        e.printStackTrace();

                                               }

                                     }

                   }}

         }

}

Jsp代码示例:

<style type="text/css">

         #previewImg img{

         width: 350px;

         height:180px;

         }

         </style>

   <form action="${pageContext.request.contextPath}/servler/Ser"

method="post" enctype="multipart/form-data" style="margin-left:30px;"> <br />

       <!--  enctype="multipart/form-data"多媒体上传 -->

       <!--  type="file"  文件类型-->

       <input type="file"  class="btn btn-info"  name="image" value="" />

       <div id="previewImg"  contenteditable="true"  style="width: 750px; height:180pxborder:

1px solid #aaa;"></div><!-- 新属性: contenteditable 属性规定是否可编辑元素的内容。-->

       <button type="submit"  class="btn btn-info">提交</button>

     </form>

   <script type="text/javascript" src="${pageContext.request.contextPath}/Content/jquery-1.12.4/jquery-1.12.4.js"></script>

 <script>     

 //实现图片预览功能:preview1使用URL方式实现;preview2使用FileReader方式实现

$('[type=file]').change(function(e) {

var file = e.target.files[0];

preview2(file);

});

function preview2(file) {

var img = new Image(), url = img.src = URL.createObjectURL(file);

var $img = $(img);

  img.onload = function() {

  URL.revokeObjectURL(url);

  $('#previewImg').empty().append($img);

    };

}

</script>

 

上传的图片结果如下:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值