0 背景

实现从前端上传图片(或视频),后端保存在指定目录下;再从前端读取文件,进行显示。

1 上传代码实现

1.1 html

1.2 ts

// 上传附件

handleChange(info: { file: UploadFile }): void {

switch (info.file.status) {

case 'uploading':

break;

case 'done':

this.response = info.file.response;//response为后端返回的一个对象

this.fileName = info.file.response.fileName;

break;

case 'error':

this.messageService.error('上传失败');

break;

}

}

1.3 Controller

@RestController

@RequestMapping("/api")

public class ImageResource {

@PostMapping(value = "/image/xxx")

public ResponseEntityuploadAISampleFile(@RequestParam(name = "uploadFile") MultipartFile file) {

//保存文件(一般写在service里)

String fileName = String.valueOf("s-"+System.currentTimeMillis());

String fullFileName = fileName + ".png";

Path path = Paths.get(properties.getImagePath(),fullFileName); //在配置文件中定义;文件实际的存储地址

deleteExistFile(path);

System.out.println("save image to path: "+path.toString());

File parentFile = path.getParent().toFile();

if (!parentFile.exists()) {

parentFile.mkdirs();

log.info("parent directory create success:" + parentFile.getPath());

}

try {

file.transferTo(path.toFile());

log.info("file upload success :" + path.toString());

} catch (Exception e) {

log.error(e.getMessage());

log.error("save image error:" + e);

}

//上传并保存成功后返回给前端的对象

ImageUploadResponse imageUploadResponse = new ImageUploadResponse();

String url = "/api/image/xxx/" + fileName; //自定义,用于显示时调用

imageUploadResponse.setUrl(url);

imageUploadResponse.setFileName(fileName);

imageUploadResponse.setUploaded(true);

return new ResponseEntity<>(imageUploadResponse, HttpStatus.OK);

}

}

1.4 ImageUploadResponse

public class ImageUploadResponse {

private boolean uploaded;

private String url;

private String fileName;

public boolean isUploaded() {

return uploaded;

}

public void setUploaded(boolean uploaded) {

this.uploaded = uploaded;

}

public String getUrl() {

return url;

}

public void setUrl(String url) {

this.url = url;

}

public String getFileName() {

return fileName;

}

public void setFileName(String fileName) {

this.fileName = fileName;

}

@Override

public String toString() {

return "ImageUploadResponse{" +

"uploaded=" + uploaded +

", url='" + url + '\'' +

", fileName='" + fileName + '\'' +

'}';

}

}

2 显示代码实现

2.1 html

2.2 controller(1.3提到的ImageResource里添加)

@GetMapping(value = "/image/xxx/{fileName}", produces = MediaType.IMAGE_PNG_VALUE)

public ResponseEntityAIImage(@PathVariable String fileName) throws IOException {

//一般写在service里

String fullFileName = fileName + ".png";

Path path = Paths.get(properties.getImagePath(),fullFfileName);

if (!path.toFile().exists()) {

Resource resource = resourceLoader.getResource("classpath:image" + File.separator + type.defaultFile());

return resource.getInputStream();

}

System.out.println("get: "+path.toString());

File file = path.toFile();

//返回给前端的文件,可直接在html页面显示

InputStream inputStream = new FileInputStream(file);

InputStreamResource resource = new InputStreamResource(inputStream);

return new ResponseEntity<>(resource, HttpStatus.OK);

}

java图片和视频上传_java实现上传和读取图片(视频)相关推荐

  1. java文件上传_Java文件上传细讲

    什么是文件上传? 文件上传就是把用户的信息保存起来. 为什么需要文件上传? 在用户注册的时候,可能需要用户提交照片.那么这张照片就应该要进行保存. 上传组件(工具) 为什么我们要使用上传工具? 为啥我 ...

  2. java 视频预览_java在上传视频时生成预览图

    在圣品上传时往往需要生成一张预览图(缩略图),如果在非特殊情况下让用户单独上传,会造成工作压力,此时可以用视频中某一帧作为封面图,实现方式如下: public class ImageUtil { /* ...

  3. java 中传输文件的代码_java文件上传Demo(必看篇)

    说到文件上传我们要做到: 1.引入两个包:commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar 2.将form改为上传文件模式:enctype=" ...

  4. java 调用 swf 文件上传_java文件上传方法

    文件上传方法(一次上传一个文件,多个文件的话,请写循环调用) Upload.uploadFile(theFile, filePath) 说明: theFile:类型是FormFile filePath ...

  5. java 客户端上传_java实现上传文件到服务器和客户端

    JAVA编写一个可以上传文件的服务器和客户端,具体内容如下 服务端 class Server { public static void main(String[] args) throws Excep ...

  6. java文件异步上传_java 异步上传文件

    我们的java上传文件,需要form同步上传,并且需要设置enctype为multipart/form-data. 如果将form使用ajax异步提交的话,将会报错说enctype不是multipar ...

  7. java断点续传上传_java断点续传上传文件,突然关闭然后再上传文件为什么不是从之前上传的进度上传...

    Controller层里这么写的 @Controller public class UploadAction { @Autowired private File_Service FileSerivce ...

  8. java复制和上传_java文件上传复制等功能

    package com.sitech.message.controller.task; import java.io.File;//引入类 import java.io.FileInputStream ...

  9. excel oss 上传_java实现上传文件到oss(阿里云)功能示例

    本文实例讲述了java实现上传文件到oss(阿里云)功能.分享给大家供大家参考,具体如下: 做这个功能之前我们需要导入阿里云OSS官方提供的工具包 aliyun-sdk-oss-2.5.0.jar 这 ...

最新文章

  1. 错误名称:EntityCommandExecutionException
  2. 雷军做程序员时写的文章,太牛了!
  3. 计算机弹奏两只老虎爱跳舞,原神风物之诗琴乐谱大全
  4. word-break属性和css换行显示
  5. 为什么python打不开_python文件打不开如何解决
  6. 【操作系统】实验 模拟操作系统的存储系统
  7. linux内核源码目录结构分析
  8. 东南亚ERP仓储管理系统怎么样?
  9. java WebSocket的实现以及Spring WebSocket
  10. CENTOS6.6上搭建单实例ORACLE12C
  11. linux抓取僵尸网络进程脚本
  12. WebDriver Sierra 10.12.3 N卡驱动
  13. 对象base64转码_什么是 Base64 编码
  14. 登录失败:用户帐户限制。可能的原因包括不允许空密码登录时间限制或强制的策略限制。
  15. AD从原理图到PCB超详细教程
  16. linux 下如何添加用户、权限
  17. 企业信息化战略与实施
  18. 【转】Java并发编程:并发容器之ConcurrentHashMap
  19. 机器学习在热门微博推荐系统的应用
  20. ERROR 220624 --- [ntainer#2-2-C-1] o.s.k.l.KafkaMessageListenerContainer : Failed to set initial

热门文章

  1. Qt之按钮添加背景图片的几种方法
  2. 宁铂、谢彦波、干政等这些当年最为耀眼的神童今归何处
  3. 2018年支付宝推荐赏金活动介绍
  4. uniapp如何实现多端支付?支付宝微信支付
  5. python和c语言和java有什么区别_python和c的区别 python、java和c语言的区别?
  6. Vue渲染DOM节点
  7. php沿河农产品特卖网站的设计与实现毕业设计源码201521
  8. 查询mysql的隔离级别_怎么查看数据库隔离级别
  9. Call to undefined function bcmath()的解决方法
  10. C++设计模式之原型模式