文件的上传及富文本编辑器

public class FileUploadController extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        req.setCharacterEncoding("UTF-8");
        resp.setCharacterEncoding("UTF-8");
        int id = Integer.parseInt(req.getParameter("id"));
        //使用FileUpload实现数据的上传
        //1.创建FileItemFactory创建工厂
        FileItemFactory factory = new DiskFileItemFactory();
        //2.ServletFileUpload
        ServletFileUpload fileUpload = new ServletFileUpload(factory);
        //3.设置对request进行解析ServletFileUpload.parseRequest
        List<FileItem> fileItems = null;
        try {
            fileItems = fileUpload.parseRequest(req);
        } catch (FileUploadException e) {
            e.printStackTrace();
        }
        UserInfo userInfo = new UserInfo();
        //4.获取到所有的表单中的字段FileItem
        for (FileItem fileItem:fileItems){
            //5.判断是否是一个文件
            if (fileItem.isFormField()){
                if (fileItem.isFormField()){
                    //普通的字段
                    System.out.println(fileItem.getFieldName()+":"+fileItem.getString());
                    if ("username".equals(fileItem.getFieldName())){
                        userInfo.setUserName(fileItem.getString());
                    }
                }
            }else {
                //上传的文件
                //6.将文件上传到对应的位置上
                //6.1 文件上传的位置设定
                String realFile = req.getServletContext().getRealPath("/abcd");
                //真是目录的对象
                File realDir = new File(realFile);
                //创建目录
                if (!realDir.exists()){
                    realDir.mkdirs();
                }
                //获取到文件的名字
                String fileName = fileItem.getName();
                //将文件名称分成两个,获取到文件的扩展名
                String extName = fileName.substring(fileName.lastIndexOf("."));
                //新文件名称创建
                String newName = UUID.randomUUID().toString() + extName;
                //实现文件的上传
                File uploadFile = new File(realFile,newName);
                try {
                    fileItem.write(uploadFile);
                } catch (Exception e) {
                    e.printStackTrace();
                }
                userInfo.setHeadphone("abcd/"+newName);

}
}
文件上传
它是将一个表单转换成一个二进制的数 据流提交,所以不能够使用request.getParameter 形式
获取参数。因此需要将表单转换成二进制表单。

富文本编辑器:可内嵌于浏览器,所见即所得的文本编辑器

富文本编辑器不同于文本编辑器,程序员可到网上下载免费的富文本编辑器内嵌于自己的网站或程序里(当然付费的功能会更强大些),方便用户编辑文章或信息。比较好的文本编辑器kindeditor,fckeditor等。

ServletFileUpload类负责处理上传的文件数据,并将表单中的每个输入项封装成FileItem对象。

在获取ServletFileUpload对象的时候,需要一个DiskFileItemFactory对象(磁盘文件项)

通过表单上传文件,get方法对上传文件的大小有限制,post方法没有限制,所以一般使用post方法。而且使用get方法的话在获取ServletFileUpload时会出错。另外,表单如果包含一个文件上传输入的话,这个表单的enctype属性就必须设置为multipart/form-data。(设置为二进制表单)
 

步骤:

1.创建FileItemFactory

2.获取ServletFileUpload对象

3.对请求进行解析(流)

4.获取到所有表单字段FileItem

5.判断是否是文件

6.将文件上传到对应位置

7.实现文件传输

方法:

fileItem.getFiledName();   得到表单传输的name

fileItem.getName();    只有是上传文件时,获取到文件名称

fileItem.getSize();      只有是上传文件时,获取到文件大小

fileItem.getString();        当前FileItem的值

fileItem.getContentType();        获取文件类型

fileItem.isFormField();        判断是不是字段,如果是普通字段,该值就是true,否则就是false

添加依赖

<!-- 文件上传组件包 -->
<!--
https://mvnrepository.com/artifact/common s-fileupload/commons-fileupload -->
<dependency>
<groupId> commons-fileupload </groupId>
<artifactId> commons-fileupload </artifactId>
<version> 1.4 </version>
</dependency>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值