zoukankan      html  css  js  c++  java
  • Play框架文件上传

    最近正在使用Play框架搭建项目,做到图片上传部分有一些问题,所以记录一下解决情况

    1. Play框架的文件上传简介

    Play框架处理了HTTP文件上传,我们只需要调用就好了。上传的图片会首先缓存在tmp目录中,然后会在data/attachments/目录下生成一个图片文件,文件名的形式为一串UUID但是没有后缀名。

    这里写图片描述

    2. Models创建

    Play框架利用play.db.jpa.Blob类型来存储图片,所以Models中用于图片上传需要有两个成员变量:
    1.用于保存文件名的String
    2.用于保存图片的Bolb

    
    @Entity(name = "houses")
    public class Houses extends Model {
    
        // 主图
        public String mainimg;
    
        //主图的Bold
        public Blob mainimgblob;
    }
    

    3. 图片上传

    <!--上传图片-->
    <label class="back-upbtn color1">
      <i class="bg w-upimg-ico1"></i>本地上传
      <input type="file" id="file_upload" name="mainimgFile">
    </label>
    public static void publish( File mainimgFile) throws FileNotFoundException {
    
            // ************主图文件上传开始****************
            // 获取上传文件的名称
             houses.mainimg = mainimgFile.getName();
             houses.mainimgblob = new Blob();
             houses.mainimgblob.set(new FileInputStream(mainimgFile),
             MimeTypes.getContentType(mainimgFile.getName()));
            // ************主图文件上传结束*************************
             index();
    }

    注意: 页面file的name要和controller的参数一致

    4. 图片显示

    #{list items:house, as:'house'}
           <img title="${house.mainimg}" src="@{housePhoto(house.id)}">
        #{/list}
    /*
         * 跳转到图片上传测试页面
         */
        public static void totest() {
            Houses house = new Houses();
            house.id = (long) 12;//传一个house,house里保存了id,mainimg和mainimgblob
            render("newhouse/test.html",house);
        }
    
    /*
         * 图片显示
         */
        public static void housePhoto(long id) {
            final Houses house = Houses.findById(id);
            notFoundIfNull(house);
            response.setContentTypeIfNotSet(house.mainimgblob.type());
            renderBinary(house.mainimgblob.get());
        }

    向页面传递一个house,调用图片显示的方法就能获取house里面的blob,然后就能显示图片了

    还可以参考官方示例:
    http://www.jianshu.com/writer#/notebooks/8096021/notes/7355251/preview

  • 相关阅读:
    Oracle基础 07 参数文件 pfile/spfile
    Oracle基础 06 控制文件 controlfile
    Oracle基础 05 联机日志 redolog
    Oracle基础 04 归档日志 archivelog
    Oracle基础 02 临时表空间 temp
    Oracle基础 03 回滚表空间 undo
    Oracle基础 01 表空间 tablespace
    PL/SQL Developer 连接 Oracle
    Windows下卸载Oracle
    Vue:基础语法
  • 原文地址:https://www.cnblogs.com/shuiyj/p/13185261.html
Copyright © 2011-2022 走看看