Nestjs 图片下载

2024-01-18 11:52
文章标签 图片下载 nestjs

本文主要是介绍Nestjs 图片下载,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、download直接下载

1、添加下载代码

uploadController.ts

import { Controller, Get, Post, Body, Patch, Param, Delete, UseInterceptors, UploadedFile, Res } from '@nestjs/common';
import { UploadService } from './upload.service';
import { CreateUploadDto } from './dto/create-upload.dto';
import { UpdateUploadDto } from './dto/update-upload.dto';
import { FileInterceptor } from '@nestjs/platform-express';
import type { Response } from 'express';
import { join } from 'path';@Controller('upload')
export class UploadController {constructor(private readonly uploadService: UploadService) { }@Post()@UseInterceptors(FileInterceptor('file')) // 'file'为前端表单字段名称async uploadFile(@UploadedFile() file) {console.log('file', file);console.log(`${file.originalname} uploaded successfully.`);return `Successfully uploaded ${file.originalname}`;}@Get('export')downLoad(@Res() res: Response) {const url = join(__dirname, '../images/1705545207094.jpg');res.download(url);}
}

 

2、apifox调用下载图片接口

 二、使用文件流的方式实现下载

1、uploadControl.ts

import { Controller, Get, Post, Body, Patch, Param, Delete, UseInterceptors, UploadedFile, Res } from '@nestjs/common';
import { UploadService } from './upload.service';
import { CreateUploadDto } from './dto/create-upload.dto';
import { UpdateUploadDto } from './dto/update-upload.dto';
import { FileInterceptor } from '@nestjs/platform-express';
import type { Response } from 'express';
import { zip } from 'compressing';
import { join } from 'path';@Controller('upload')
export class UploadController {constructor(private readonly uploadService: UploadService) { }@Post()@UseInterceptors(FileInterceptor('file')) // 'file'为前端表单字段名称async uploadFile(@UploadedFile() file) {console.log('file', file);console.log(`${file.originalname} uploaded successfully.`);return `Successfully uploaded ${file.originalname}`;}@Get('export')downLoad(@Res() res: Response) {const url = join(__dirname, '../images/1705545207094.jpg');res.download(url);}@Get('stream')async down(@Res() res:Response) {const url = join(__dirname, '../images/1705545207094.jpg');const tarStream = new zip.Stream();await tarStream.addEntry(url);res.setHeader('Content-type', 'application/octet-stream');res.setHeader('Content-Disposition','attachment; filename=test');tarStream.pipe(res);}
}

2、web端实现接口调用 

<template><div class="container" @click="download">下载图片</div>
</template><script setup>const download = async () => {const url = '/api/upload/stream';const res = await fetch(url).then(res => res.arrayBuffer());console.log('res', res);const a = document.createElement('a');a.href = URL.createObjectURL(new Blob([res], {}));a.download = 'test.zip';a.click();a.remove();
};</script><style lang="scss" scoped>
.container{margin: 20px;background: yellowgreen;padding: 10px 20px;font-size: 16px;cursor: pointer;color: #fff;border-radius: 3px;transition: all 0.3s;&:hover{background: #35cd32;}
}
</style>

3、效果截图

 

这篇关于Nestjs 图片下载的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/618902

相关文章

mhtml图片提取 百度图片下载

如果你需要找一些图片,可以先去百度一下,待相关网页加载完成后,点击保存,即可得到一个mhtml文件。这个文件里的图片会用base64进行存储,只需要找到他们并转化就可以。目前在美篇之类的网站上效果还一般,需要继续排查问题。 效果 代码 大概分为提取所有base64、转化为图片两步。 import base64from io import BytesIOfrom PIL import

NestJs bull 用法

bull简介 队列 bull bull用法 https://github.com/OptimalBits/bull Bull is currently in maintenance mode, we are only fixing bugs. For new features check BullMQ, a modern rewritten implementation in Typesc

ts 新版的@nestjs/commo下redis的注册使用

一.我之前在@nestjs/commo 10以下时候注册redis时候,用在最新的"@nestjs/common": "^10.0.0",上面有问题,store添加上后,一直没能够注册成功,不加上我在redis工具上又没有查看到保存的数据,说明数据没有按照规定注册保存到想要的位置。 ①添加依赖,我这里添加的依赖是符合"@nestjs/common": "^10.0.0",的,在我使用的时间下,安

nestjs/schedule nestjs定时任务

使用 import { Injectable, Logger } from '@nestjs/common';import { Cron, Interval, Timeout } from '@nestjs/schedule';@Injectable()export class TasksService {private readonly logger = new Logger(TasksS

TMDOG的微服务之路_07——初入微服务,NestJS微服务快速入门

TMDOG的微服务之路_07——初入微服务,NestJS微服务快速入门 博客地址:TMDOG的博客 在前几篇博客中,我们探讨了如何在 NestJS 中的一些基础功能,并可以使用NestJS实现一个简单的单体架构后端应用。本篇博客,我们将进入微服务架构,以一个简单的NestJS示例快速了解微服务架构。 1. 什么是微服务? 微服务架构是一种软件开发方法,将应用程序划分为多个独立的小服务,每个

3 nestjs 集成 Swagger

安装依赖 pnpm install @nestjs/swagger class-validator 在 main.ts 中定义 SwaggerModule 类 import { NestFactory } from '@nestjs/core';import { AppModule } from './app.module';import { SwaggerModule, Docu

使用NestJS构建安全密码重置功能的完整指南:实现短信链接跳转验证功能

引言 实现忘记密码的短信链接验证功能,可以按照以下步骤进行: 用户请求重置密码:用户提供注册手机号码,系统生成一个唯一的重置令牌(token),将令牌和用户信息存储在数据库中,并将包含重置令牌的链接通过短信发送给用户。 用户点击链接:用户点击短信中的链接,服务器验证令牌的有效性。如果令牌有效,用户可以设置新密码。 设置新密码:用户输入新密码,服务器验证并更新用户密码,删除或使令牌失效。

el-image 增加图片下载和删除功能

<el-image@click.stop.prevent="clickImage"style="width: 100px; height: 100px":src="item":preview-src-list="[item]"></el-image> clickImage() {this.$nextTick(() =>

“鸿蒙开发之图片下载”--案例问题整理

鸿蒙开发之图片下载 关于以上连接中案例demo使用问题整理如下图 而且在写这个案例的时候记得添加权限 "requestPermissions":[{"name" : "ohos.permission.INTERNET"}]

NestJS学习笔记

一、安装NestJS CLI工具 环境检查 //查看node版本node -v//查看npm版本npm -v 安装@nest/cli 使用npm全局安装@nestjs/cli npm i -g @nestjs/cli 查看nest版本 nest -v 结果如图: 创建nest项目 //命令行创建nest项目nest new 【项目名】 VScode扩展下载