zoukankan      html  css  js  c++  java
  • Grails 项目中处理图片上传,下面是单个的文件上传 Example

    1. 前台页面上传图片的的GSP页面:
    2. <g:form action="save"  method="post" enctype="multipart/form-data">//上传文件需要把form表单的enctype 属性设置为multipart/form-data
    3.    <div> <input type="file" id
    4. 前台页面上传图片的的GSP页面:
    5. <g:form action="save"  method="post" enctype="multipart/form-data">//上传文件需要把form表单的enctype 属性设置为multipart/form-data
    6.    <div> <input type="file" id="projectLogoPath" name="projectLogoPath"value="${fieldValue(bean:projectInstance,field:'projectLogoPath')}" />//上传图片的表单控件
    7. </div>          <fieldset class="buttons">
    8.                 <g:submitButton name="create" class="save" value="${message(code: 'default.button.create.label', default: 'Create')}" />
    9. </fieldset>
    10. </g:form>
    11. ="projectLogoPath" name="projectLogoPath"value="${fieldValue(bean:projectInstance,field:'projectLogoPath')}" />//上传图片的表单控件
    12. </div>          <fieldset class="buttons">
    13.                 <g:submitButton name="create" class="save" value="${message(code: 'default.button.create.label', default: 'Create')}" />
    14. </fieldset>
    15. </g:form>
    • Cottroller 中的方法:
    • def uploadImage(){//上傳圖片到本地文件夾中
    •        def fileName
    •        def filePath
    • def f = request.getFile('projectLogoPath')//获取前台页面表单控//中的文件名称
    •        if(!f.empty) {
    •            Date  d=new Date();
    •            String dateString=  d.format("yyyy-mm-dd-hh-ss")
    •            String  fileProName=f.getOriginalFilename()
    • String extension = fileProName.split('\.')[-1]//截取获取文
    • //件名的后缀
    •            fileName=dateString+"."+extension
    •            filePath="web-app/images/"
    •            f.transferTo(new File(filePath+fileName))
    •        }
    •        return  filename    //返回文件名称
    •     }
    1. Product domain类中存储的是图片的相对路径:
    2. def save() {
    3.        User user=SpringSecurityService.currentUser//获取当前用户名
    4.        def productInstance = new Product(params)
    5.        productInstance.state=0;
    6. String pictureUrl=uploadImage()//调用上传图片的方法,返回一个储//存图片的路径。
    7.        productInstance.pictureUrl=pictureUrl//存储图片路径
    8.        if (!productInstance.save(flush: true)) {
    9.            render(view: "create", model: [productInstance: productInstance])
    10.            return
    11.        }

     

    1.        ProductSet p=new ProductSet()//在用户保存商品信息的时候将用户和商品关联起来
    2.        p.user=user
    3.        p.product=productInstance
    4.        p.save();
    5.        flash.message = message(code: 'default.created.message', args: [
    6.            message(code: 'product.label', default: 'Product'),
    7.            productInstance.id
    8.        ])
    9.        redirect(action: "list", id: productInstance.id)
    10.     }
    • 前台页面显示显示图片方式:
    • <img
    • src="<%=request.getContextPath()%>/images/${productInstance.pictureUrl}" alt="Grails" style="height:100px; 150px;"/>
  • 相关阅读:
    QML与C++交互
    etcd集群搭建
    Mac book如何允许第三方未知来源程序安装详细教程(小白篇)
    Windows10下搭建基于VSCODE的RISC-V单片机CH32V103开发环境
    Linux的JAVA开发环境部署
    source 'https://api.nuget.org/v3/index.json': The author primary signature validity period has expired
    element-ui + vue ,ant-design + vue , Angular + ZORRO 实现表格自动横纵向合并单元格,并自动根据单元格数据进行添加样式
    VUE Angular通用动态列表组件-亦可为自动轮播组件-01-根据数据量自动纵向滚动,鼠标划入停止滚动
    VUE Angular通用动态列表组件-亦可为自动轮播组件-02-根据数据量自动横向滚动,鼠标划入停止滚动
    echarts系列-样式调整总结
  • 原文地址:https://www.cnblogs.com/sm-myworks/p/3662561.html
Copyright © 2011-2022 走看看