上传档案 - day19

Upload

Vaadin 档案上传档案使用 Upload Component,Upload 支援单个或多个档案视觉化拖放,可限制档案类型、档案大小、图档尺寸...等功能。

接收器

档案从client上传至server时须指定接收器 Receiver,vaadin 提供多种已实作的 Receiver

  • FileBuffer
  • MemoryBuffer
  • MultiFileBuffer
  • MultifileMemoryBuffer

学生相片上传

更改资料库栏位

请开新档 V04__AlterStudent.sql,在 table Student 增加栏位 photo

ALTER TABLE Student ADD photo VARCHAR(100);

上传/接收

我们使用同一案例上传学生相片,请开启 StudentEditDialog.kt,下方增加上传功能,存档并将档名存在student.photo栏位,以便後续存取

val buffer = FileBuffer()
var fileName : String? = ""
upload {
    setReceiver(buffer)
    setAcceptedFileTypes("image/jpeg", "image/png")
    maxFiles = 1
    maxFileSize = 1024*1024
    addSucceededListener {
        fileName = "/students/photos/photo_${studentId}.${buffer.fileName.split(".").run { get(size-1) }}"
        val file = File(VaadinServlet.getCurrent().servletContext.getRealPath("/") + fileName)
.${buffer.fileName.split(".").get(1)}"
        val file = File(fileName)
        student.photo = fileName
        FileUtils.copyToFile(buffer.inputStream, file)
    }
}

第一、四行,使用 FileBuffer 接收上传资料
第五行,限制档案型态
第六行,因为相片只需要一张,限制上传数量为1
第七行,档案大小以byte为单位
第八行,档案上传成功执行addSucceededListener{}

取得当前实际目录

Vaadin 和一般J2EE网路应用程序一样,使用 ServletContext (J2EE规范)的getRealPath()方法取得实际路径。

VaadinServlet.getCurrent().servletContext.getRealPath("/")

https://ithelp.ithome.com.tw/upload/images/20211004/20138680mHLyvYLyel.png


<<:  [神经机器翻译理论与实作] 重新检视有无注意力机制的Encoder-Decoder

>>:  Teachable Machine (TM)

[Day 14] tinyML开发框架(二):Arm CMSIS 简介

在[Day 10] tinyML整合开发平台介绍有提到小型AI(tinyML)应用程序开发框架(Fi...

[Day 1] 阿嬷识的代志

阿嬷识的代志 阿嬷不识字但是伊识真多的代志 -游鸿明〈无字的情批〉 哈罗大家好,欢迎来到「你阿嬷成为...

最完整!转专业 CS 补学分:你适合哪种路线?

学校:University of Colorado Boulder 科系:post-baccala...

Unity自主学习(八):Unity Hub授权Unity引擎

昨天我们都安装好Unity引擎,架设好可以编译程序的环境之後 打开"Unity Hub&q...

内容交付网络(Content delivery network)

内容传递网络(Content Delivery Network) 内容交付网络或内容分发网络(CD...