技术教程

从零开始系列——文件上传项工具类

微信扫一扫,分享到朋友圈

从零开始系列——文件上传项工具类
0 0

fileUpload是apache的文件上传组件,apache便是tomcat的制造厂商。fileUpload可以解析request中的信息。

Maven注入依赖和对应jar包

<!-- 文件上传依赖 -->
<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.1</version>
</dependency>

ImageUitls.java

package com.code.global;

import com.code.bean.Book;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.util.List;

/**
 * 文件上传项
 */
public class ImageUtils {
    public static Book uploadImage(HttpServletRequest request) throws FileUploadException, UnsupportedEncodingException {
        // 创建工厂类
        DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
        // 创建解析器
        ServletFileUpload upload = new ServletFileUpload(diskFileItemFactory);
        // 解析request对象 返回List集合
        List<FileItem> list = upload.parseRequest(request);
        // 创建一个对象
        Book book = new Book();

        // 判断是否是普通表单字段,若是,返回true,否则返回false(图片)
        for (FileItem u : list){
            if (u.isFormField()){ // 普通文本框
                // getFieldName() 获得表单字段的name值
                if (u.getFieldName().equals("BookName"))
                    // getString() 获得表单字段中value
                    book.setName(u.getString("UTF-8"));
                if (u.getFieldName().equals("categoryId"))
                    book.setName(u.getString("UTF-8"));
                if (u.getFieldName().equals("level"))
                    book.setName(u.getString("UTF-8"));
                if (u.getFieldName().equals("price"))
                    book.setName(u.getString("UTF-8"));
            }else { // 文件上传项
                //  获得工程的物理根目录
                String rootPath = request.getServletContext().getRealPath("/");
                // 获得图片名称
                String pathName = u.getName();
                // 设置默认后缀
                String type = ".jpg";
                if(pathName.indexOf(".")!=-1) {
                    type = pathName.substring(pathName.lastIndexOf("."));
                }
                // 设置图片存放地点
                pathName = "/download/image/" + System.currentTimeMillis() + type;
                try {
                    u.write(new File(rootPath + pathName));
                    book.setImagePath(pathName);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
        return book;
    }
}

从零开始系列——Filter过滤器常见两大用法

上一篇

从零开始系列——关于jsp页面访问本地图片 idea项目

下一篇

你也可能喜欢

发表评论

插入图片
从零开始系列——文件上传项工具类

长按储存图像,分享给朋友