Servlet 上传图片

[TOC]

Servlet 上传图片

预备

需求包

commons-fileupload -用于上传

jstl -用于jsp页面遍历

servlet-api -使用servlet

pom

    <dependencies>
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.2</version>
        </dependency>
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
        </dependency>
    </dependencies>

前端代码

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>上传Demo</title>
</head>
<body>
    <form action="uploadServlet" method="post"
        enctype="multipart/form-data">

        上传文件:<input type="file" name="file"><br/>
        上传文件:<input type="file" name="file2"><br/>
        <input type="submit" />
    </form>
    <c:forEach items="${pics }" var="p">
    <img src="heads/${p }" />
    </c:forEach>
</body>
</html>

后端处理代码

package com;

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

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
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;

@WebServlet("/uploadServlet")
public class uploadServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    public uploadServlet() {
        super();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.sendRedirect("index.jsp");
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        // 是否是多功能表单
        boolean isMultipart = ServletFileUpload.isMultipartContent(request);
        if (!isMultipart) {
            return;
        }

        // 目标服务端目录
        String path = request.getSession().getServletContext().getRealPath("/heads");
        // String path="D:/heads";
        File file = new File(path);

        // 如果目录不存在就创建目录
        if (!file.exists() && !file.isDirectory()) {
            file.mkdirs();
        }

        // 接受文件列表
        List piclist = new ArrayList(); // 放上传的图片名

        DiskFileItemFactory factory = new DiskFileItemFactory();
        ServletFileUpload upload = new ServletFileUpload(factory);

        upload.setHeaderEncoding("UTF-8"); // 处理中文问题
        upload.setSizeMax(1024 * 1024 * 5); // 限制文件大小5M

        try {
            // 得到所有表单元素
            List<FileItem> fileItems = upload.parseRequest(request); // 解码请求

            for (FileItem item : fileItems) {
                System.out.println(item);
                // 有可能是 文件,也可能是普通文字
                if (item.isFormField()) { // 这个选项是 文字
                    System.out.println("表单值为:" + item.getString());
                } else {
                    // 是文件
                    String fileName = item.getName();
                    System.out.println("文件名是:" + fileName); // 文件名
                    item.write(new File(path, fileName));

                    if (fileName.endsWith(".jpg") || fileName.endsWith(".png") || fileName.endsWith(".bmp") || fileName.endsWith(".ico") || fileName.endsWith(".gif")) {
                        piclist.add(fileName); // 把图片放入集合
                    }
                }
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

        // 去显示上传的文件
        request.setAttribute("pics", piclist);
        request.getRequestDispatcher("index.jsp").forward(request, response);
    }

}

原文地址:https://www.cnblogs.com/vmask/p/8728698.html

时间: 2024-10-15 11:37:10

Servlet 上传图片的相关文章

servlet上传图片 服务器路径

1.在servlet中上传图片,上传的文件夹是imge在webroot下,主要代码如下 private void saveImage(HttpServletRequest request, HttpServletResponse response) throws IOException { //保存的图片的名称 fileName =System.currentTimeMillis() + ".jpg"; //获得imge文件夹在tomcat中的决定路径,basePath的值是C:\Pr

jsp+servlet 上传图片实例

最近,在弄android小程序,现在需要做一个服务器后端,这里我下载了一个商城源码,想添加商品图片,这里在网上找了一个实例 引用: http://blog.csdn.net/shuwei003/article/details/6742332 这里需要jar包 希望之光微弱,但是依然坚持慢慢地向前走!

JAVA servlet无刷新上传图片文件并裁剪demo代码(Jcrop)

原文:JAVA servlet无刷新上传图片文件并裁剪demo代码(Jcrop) 源代码下载地址:http://www.zuidaima.com/share/1550463770102784.htm sevlet写的demo,可直接运行.   

Servlet doPost方法同时上传图片和传递参数

上传图片和传递参数 上传图片和文件属于enctype="multipart/form-data" form中加入enctype="multipart/form-data"时整个表单被封装,字符将转成二进制流,因此request.getParameter("user_type")是得不到值的: 默认情况,传递参数编码格式是application/x-www-form-urlencoded,不能用于文件上传:只有使用了multipart/form-

Vue+axios+Servlet 中提交表单数据(含上传图片)超详版!!!

1.HTML页面 这里用post方法传送,大小不受限制:还用了v-model的双向绑定 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <link href="../css/bootstrap.css" type="text/css" rel="stylesheet&

检验上传图片大小、尺寸、类型的两种实现方案

做图片上传功能时,我们经常会遇到一个问题就是,就是要对上传的图片进行一个校验,校验的东西包括图片的大小.尺寸(即宽和高)以及图片的类型. 今天我主要介绍两种方式来进行图片的校验,一种是在前端用js校验,另一种是放在服务器端校验.接下来我们来进行介绍 第一种:放在前端用js校验 下面直接贴源代码,注释也写在代码里面 1 <%@ page language="java" contenttype="text/html; charset=UTF-8" pageenco

android 上传图片到服务器Tomcat(Struts2)

在做android开发的时候,有时你会用到图片的上传功能,在我的android项目中,我是选中图片,点击上传多张图片 android客户端上传图片部分的代码如下: package com.example.myphotos.utils; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.Inp

Java基础——Servlet(八)文件上传下载

一.简单的文件上传常见的组件Smartupload , Apache 的 commons FileUploadSmartupload上传的步骤: 1.初始化上传上下文 2.准备上传 3.保存文件 <% if(request.getParameter("flag")!=null){ SmartUpload su=new SmartUpload(); su.initialize(pageContext); su.upload(); su.save("/upload_file

Android端上传图片到后台,存储到数据库中 详细代码

首先点击头像弹出popwindow,点击相册,相机,调用手机自带的裁剪功能,然后异步任务类访问服务器,上传头像,保存到数据库中, 下面写出popwindow的代码 //设置popwindow public PopupWindow getPopWindow(View view){ PopupWindow popupWindow=new PopupWindow(view, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParam