网站注册价格福田欧辉校车

news/2025/10/1 19:11:00/文章来源:
网站注册价格,福田欧辉校车,安阳空气,上海平台网站建设平台分布式文件系统 SpringBootFastDFSVue.js【四】 八、文件的下载和删除功能8.1.FastDFSClient.java8.2.FileServerController.java8.3.Vue的fast.js8.4.fastdfsimg.vue8.5.效果 九、总结endl 八、文件的下载和删除功能 8.1.FastDFSClient.java Slf4j public class FastDFSClie… 分布式文件系统 SpringBootFastDFSVue.js【四】 八、文件的下载和删除功能8.1.FastDFSClient.java8.2.FileServerController.java8.3.Vue的fast.js8.4.fastdfsimg.vue8.5.效果 九、总结endl 八、文件的下载和删除功能 8.1.FastDFSClient.java Slf4j public class FastDFSClient {static {//加载fastDFS客户端的配置文件try {ClientGlobal.initByProperties(config/fastdfs-client.properties);log.info(network_timeout {} ms, ClientGlobal.g_network_timeout);log.info(charset {}, ClientGlobal.g_charset);} catch (IOException e) {e.printStackTrace();} catch (MyException e) {e.printStackTrace();}}/*** 上传文件** param file* param fastDFSFile* return* throws IOException*/public static FastDfsFile upload(MultipartFile file, FastDfsFile fastDFSFile) throws IOException {byte[] file_buff null;//把文件转成输入流InputStream inputStream file.getInputStream();if (inputStream ! null) {//获取输入流中可读取的数据大小int len inputStream.available();//创建足够大的缓冲区file_buff new byte[len];//一次性把输入流中的数据全都读入到缓冲区file_buff,那file_buff就要足够大,占用内存也会很大inputStream.read(file_buff);}//关闭输入流inputStream.close();//通过fastDSF的client代码访问tracker和storagetry {//创建tracker的客户端TrackerClient trackerClient new TrackerClient(ClientGlobal.getG_tracker_group());//通过TrackerClient对象获取TrackerServer信息TrackerServer trackerServer trackerClient.getTrackerServer();StorageServer storageServer null;//定义storage的客户端,建立与Storage服务器的连接StorageClient1 storageClient new StorageClient1(trackerServer, storageServer);//文件元信息NameValuePair[] metaList new NameValuePair[1];metaList[0] new NameValuePair(fileName, fastDFSFile.getFileName());//执行上传String fileId storageClient.upload_file1(file_buff, fastDFSFile.getExt(), metaList);log.info(upload success. file id is: {}, fileId);fastDFSFile.setFileId(fileId);fastDFSFile.setFilePath(fileId);fastDFSFile.setFileSize(file.getSize());fastDFSFile.setCreateTime(LocalDateTime.now());fastDFSFile.setUpdateTime(LocalDateTime.now());//通过调用service及dao将文件的路径存储到数据库中//关闭storage客户端storageClient.close();return fastDFSFile;} catch (Exception e) {log.error(上传文件失败, e);e.printStackTrace();return null;}}/*** 删除文件** param file_id* return* throws IOException* throws MyException*/public static Boolean delete(String file_id) throws IOException, MyException {//通过fastDSF的client代码访问tracker和storage//创建tracker的客户端TrackerClient trackerClient new TrackerClient(ClientGlobal.getG_tracker_group());//通过TrackerClient对象获取TrackerServer信息TrackerServer trackerServer trackerClient.getTrackerServer();StorageServer storageServer null;//定义storage的客户端,建立与Storage服务器的连接StorageClient1 storageClient new StorageClient1(trackerServer, storageServer);//查询文件//upload success. file id is: group1/M00/00/00/wKjljWXHAauARHa2AAWwwNOt0hY257.pngString[] splitStr file_id.split(/);String group_name splitStr[0];//group1String remoteFileName ;//M00/00/00/wKjljWXHAauARHa2AAWwwNOt0hY257.pngfor (int i 1; i splitStr.length; i) {remoteFileName splitStr[i];if (i ! splitStr.length - 1) {remoteFileName /;}}log.info(group_name : {}, group_name);log.info(remoteFileName : {}, remoteFileName);FileInfo fileInfo storageClient.query_file_info(group_name, remoteFileName);log.info(fileInfo {}, fileInfo);if (fileInfo null) {log.info(您删除的文件信息不存在请核对后再次删除......);return false;}storageClient.delete_file1(file_id);log.info(删除成功);//关闭storage客户端storageClient.close();return true;}/*** 下载文件** param file_id* throws IOException* throws MyException*/public static byte[] downloadFastFile(String file_id) throws IOException, MyException {//通过fastDSF的client代码访问tracker和storage//创建tracker的客户端TrackerClient trackerClient new TrackerClient(ClientGlobal.getG_tracker_group());//通过TrackerClient对象获取TrackerServer信息TrackerServer trackerServer trackerClient.getTrackerServer();StorageServer storageServer null;//定义storage的客户端,建立与Storage服务器的连接StorageClient1 storageClient new StorageClient1(trackerServer, storageServer);//查询文件//upload success. file id is: group1/M00/00/00/wKjljWXHAauARHa2AAWwwNOt0hY257.pngString[] splitStr file_id.split(/);String group_name splitStr[0];//group1String remoteFileName ;//M00/00/00/wKjljWXHAauARHa2AAWwwNOt0hY257.pngfor (int i 1; i splitStr.length; i) {remoteFileName splitStr[i];if (i ! splitStr.length - 1) {remoteFileName /;}}log.info(group_name : {}, group_name);log.info(remoteFileName : {}, remoteFileName);FileInfo fileInfo storageClient.query_file_info(group_name, remoteFileName);log.info(fileInfo {}, fileInfo);if (fileInfo null) {log.info(您下载的文件信息不存在请核对后再次下载......);return null;}//下载操作,传文件id返回字节流byte[] bytes storageClient.download_file1(file_id);//关闭storage客户端storageClient.close();return bytes;} }8.2.FileServerController.java Slf4j RestController RequestMapping(/fastDFSFile) public class FileServerController {Resourceprivate FastDfsFileService fastDfsFileService;Resourceprivate FastDfsFileTypeService fastDfsFileTypeService;PostMapping(/upload)ResponseBodypublic R upload(RequestParam(file) MultipartFile file) throws IOException {//将文件先存储在web服务器上(本机),在调用fastDFS的client将文件上传到 fastDFS服务器FastDfsFile fastDFSFile new FastDfsFile();String contentType file.getContentType();//检验当前文件是否在上述集合中log.info(上传的文件类型为{}, contentType);int count fastDfsFileTypeService.selectByFileType(contentType);if (count 1) {log.info(不支持此文件类型上传 : {}, contentType);return R.error().setCode(208).setMessage(不支持此文件类型上传 : contentType);}log.info(此文件类型为 : {}, contentType);fastDFSFile.setFileType(contentType);//文件原始名称String originalFilename file.getOriginalFilename();log.info(原始文件名称 : {}, originalFilename);fastDFSFile.setFileName(originalFilename);//文件扩展名比如22.jpgString filenameExtension StringUtils.getFilenameExtension(originalFilename);log.info(文件类型 {}, filenameExtension);//jpgif (filenameExtension null) {return R.error().setCode(208).setMessage(此文件没有文件扩展名);}fastDFSFile.setExt(filenameExtension);//新文件名称String fileName UUID.randomUUID().toString().replace(-, ) . filenameExtension;log.info(新文件名称 {}, fileName);FastDfsFile fastDfsFile1 FastDFSClient.upload(file, fastDFSFile);if (fastDfsFile1 ! null) {fastDfsFileService.save(fastDfsFile1);Long id fastDfsFileService.selectByFileId(fastDfsFile1.getFileId());fastDfsFile1.setId(id);return R.ok().setCode(200).setMessage(上传成功).data(fastDfsFile, fastDfsFile1);}return R.error().setCode(208).setMessage(上传失败);}//restful风格DeleteMapping()public R delete(RequestParam(id) Long id, RequestParam(fileId) String fileId) throws MyException, IOException {Boolean result FastDFSClient.delete(fileId);if (!result) {log.info(删除失败);return R.error().setCode(208).setMessage(删除失败);}int count fastDfsFileService.deleteFastDfsFileById(id);if (count 1) {log.info(删除失败);return R.error().setCode(208).setMessage(删除失败);}log.info(删除成功);return R.ok().setCode(200).setMessage(删除成功);}GetMapping()public void downloadfile(HttpServletResponse response, String fileId, String fileName) throws IOException, MyException {if (fileId null) return;log.info(fileName {}, fileName);response.setContentType(application/force-download;charsetUTF-8);response.setCharacterEncoding(UTF-8);response.addHeader(Content-Disposition, attachment;fileName new String(fileName.getBytes(gb2312), ISO-8859-1));byte[] bytes FastDFSClient.downloadFastFile(fileId);FileInputStream fis null;log.info(fileId {}, fileId);int len 0;OutputStream outputStream null;try {outputStream response.getOutputStream();if (bytes null) {return;}log.info(success);outputStream.write(bytes);outputStream.flush();} catch (Exception e) {e.printStackTrace();} finally {try {if (outputStream ! null) {outputStream.close();}if (fis ! null) {fis.close();}} catch (IOException e) {throw new RuntimeException(e);}}}GetMapping(/getPageFastImg/{page}/{limit})public R getPageFastImg(PathVariable int page, PathVariable int limit) {PageBeanFastDfsFile pageBean fastDfsFileService.findFastDfsFileByPage(page, limit);return R.ok().setCode(200).setMessage(查询成功).data(pageBean, pageBean);} }8.3.Vue的fast.js import request from ../../utils/request;const api_name /fastDFSFileexport default {//上传图片uploadImg() {return request({url: ${api_name},method: post,})},getPageFastImg(page, limit) {return request({url: ${api_name}/getPageFastImg/${page}/${limit},method: get,})},getNextPageFastImg(page, limit) {return request({url: ${api_name}/getPageFastImg/${page}/${limit},method: get,})},//restful风格 ?id123fileId456deleteFastImg(id, fileId) {return request({url: ${api_name},method: delete,params: {id: id,fileId: fileId}})},getFileSrc(fileId) {return request({url: ${api_name},method: get,params: {fileId: fileId},responseType: blod})}, }8.4.fastdfsimg.vue templatedivh2图片管理/h2!--图片列表--el-tablesizesmallstylemargin: 30px;empty-text无数据:dataimgListhighlight-current-row v-loadingloading border element-loading-text拼命加载中el-table-column aligncenter sortable propfilePath label文件路径 width450/el-table-columnel-table-column aligncenter sortable propfileSize label文件大小 width100/el-table-columnel-table-column aligncenter sortable propfileName label文件名 width130/el-table-columnel-table-column aligncenter sortable propext label扩展名 width100/el-table-columnel-table-column aligncenter sortable propfileType label文件类型 width100/el-table-columnel-table-column aligncenter sortable propfilePath label预览图片 width100template slot-scopescopeimg :srcgetImageUrl(scope.row.filePath) stylemax-width: 100px;max-height: 100px alt图标//template/el-table-columnel-table-column label操作 width200 aligncentertemplate slot-scopescopeel-button typetext sizesmall iconel-icon-download clickgetFileSrc(scope.row)下载/el-buttonel-popconfirm title确定删除吗 confirmhandleDeleteOne(scope.row)template #referenceel-button typedanger sizesmall iconel-icon-delete删除/el-button/template/el-popconfirm/template/el-table-column/el-table!-- 分页 --el-pagination classpagination styletext-align: center;margin-top: 50pxlayoutprev, pager, next:current-pagepage:totaltotal:page-sizelimitcurrent-changefetchData/el-pagination/div /templatescript import fastApi from /api/fastdfs/fast; import request from ../../utils/request;export default {name: FastdfsImg,data() {return {total: 0, // 数据库中的总记录数page: 1, // 默认页码limit: 5, // 每页记录数imgList: {},//imagePath: http://192.168.229.141/, // 图片的基础路径}},created() {this.init()},methods: {init() {fastApi.getPageFastImg(this.page, this.limit).then(response {this.imgList response.data.pageBean.liststhis.total response.data.pageBean.totalCount})},//获取图片路径getImageUrl(filePath) {//return ${this.imagePath}${filePath}; // 拼接图片路径return this.$baseImagePath / filePath; // 拼接图片路径},//下一页fetchData(page) {this.page pagefastApi.getNextPageFastImg(this.page, this.limit).then(response {this.imgList response.data.pageBean.liststhis.total response.data.pageBean.totalCount})},// 单选删除handleDeleteOne(FastDfsFile) {fastApi.deleteFastImg(FastDfsFile.id, FastDfsFile.fileId).then(response {this.$message.success(response.message)this.init()})},// 下载文件getFileSrc(FastDfsFile) {//window.open(this.$baseImagePath/FastDfsFile.fileId,_blank);/*fastApi.downloadFastImg(FastDfsFile.fileId).then(response{this.$message.success(response.message)})*/window.location.href request.defaults.baseURL /fastDFSFile?fileId FastDfsFile.fileId fileName FastDfsFile.fileName;}}, } /scriptstyle scoped/style8.5.效果 九、总结 案例有些不足功能太简单功能复杂可以做一个类似网盘的文件管理系统仅仅学习使用某些功能暂不深入开发有兴趣的伙伴可以尝试一番类似于阿里云oss endl

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/924178.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

详细介绍:给贾维斯加“手势控制”:从原理到落地,打造多模态交互的本地智能助

详细介绍:给贾维斯加“手势控制”:从原理到落地,打造多模态交互的本地智能助pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-f…

完整教程:学术论文 Word 样式规范

完整教程:学术论文 Word 样式规范pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&…

完整教程:QT示例 使用QTcpSocket和QTcpServer类实现TCP的自定义消息头、消息体通信示例

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

企业网站建设方案论文自己做网站用花钱吗

1、什么是接口mock 主要是针对单元测试的应用,它可以很方便的解除单元测试中各种依赖,大大的降低了编写单元测试的难度 2、什么是mock server 正常情况下:测试客户端——测试——> 被测系统 ——依赖——>外部服务依赖 在被测系统和…

东莞网站忧化wordpress素锦模板

今天没有早八,八点之钱起床了,上午背了半小时的单词,然后就在写top100,目前中等和简单写了30题,基本上都没有看题解。我自己也整理下,每一题的思路,这样子,也会让我至少拥有做模板题…

温州网站建设设计公司网络营销推广的力度

前言 在管理端会遇到多分类时,要求有层次展示出来,并且每个分类有额外的操作。例如:添加分类、编辑分类、删除、拖到分类等。 下面将会记录这样的一个需求实习过程。 了解需求 分类展示按层级展示分类根据特定的参数展示可以操作的按钮&a…

【c++】深入理解string类(3):典型OJ题 - 指南

【c++】深入理解string类(3):典型OJ题 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", …

取印度孟买指数(SENSEX)实时行情API对接指南

获取印度孟买指数(SENSEX)实时行情API对接指南本文详细介绍如何通过API获取印度孟买敏感30指数(SENSEX)的实时行情数据,包含多种数据获取方式和代码示例概述 印度孟买敏感30指数(SENSEX)是印度孟买证券交易所的主要股…

网站推广存在的问题wordpress on.7主题

背景: 纯虚类(抽象类) 是只至少拥有一个纯虚函数的类,这种类可以有成员变量,但是不能进行单独的实例化(new,局部变量,智能指针构造等等)。其根本原因是由于纯虚类提供了未实现的成员函数,所以编译器无法知…

京东物流网站建设特点潜江58同城

CSS进阶 目标:掌握复合选择器作用和写法;使用background属性添加背景效果 01-复合选择器 定义:由两个或多个基础选择器,通过不同的方式组合而成。 作用:更准确、更高效的选择目标元素(标签)。…

企业建站网站认证企业的网站推广意义

目录 一、配置接口的全球单播地址 二、配置接口本地链路地址 三、配置接口任播地址 四、配置接口PMTU 配置静态PMTU: 配置动态PMTU: 五、接口配置IPV6地址示例: 一、配置接口的全球单播地址 全球单播地址类似于IPv4公网地址&#xff0…

网站流量推广网站1996年推广

前言 之前文章简单介绍了如何运行ginvue的前后端分离开源项目,该项目是学习了Gin实践教程后结合vue-element-admin写的,该教程讲得很详细,适合入门Gin。本篇文章将介绍ginvue的前后端分离开源项目中如何使用gin-jwt对API进行权限验证。 安装g…

2025青海视频号运营优质公司推荐榜:专业服务与创新策略口碑

2025氧化镁优质厂家权威推荐榜:品质卓越与技术实力深度解析 一、行业背景 氧化镁作为一种重要的无机化工产品,在众多领域都有着广泛的应用。它具有高熔点、高硬度、良好的化学稳定性等特性,被广泛应用于耐火材料、橡…

2025 年发泡陶瓷厂家 TOP 企业品牌推荐排行榜,发泡陶瓷线条 / 构件 / 装饰构件 / 空心砖 / 窗套线 / 浮雕 / 装饰线条推荐这十家公司

在建筑装饰材料行业蓬勃发展的当下,发泡陶瓷凭借其轻质、防火、耐候性强等优势,在各类建筑项目中得到广泛应用。然而,随着市场需求的不断增长,发泡陶瓷厂家数量日益增多,产品质量却参差不齐。部分厂家为追求短期利…

Future相关并发类使用

Future相关并发类使用 目录Future相关并发类使用一、Callable&Future&FutureTask 详解1. 基础组件对比:Runnable vs Callable2. Future 接口:任务管理工具3. FutureTask:Runnable 与 Future 的结合体4. Fut…

医药网站模板做网站哪家服务器好

在人工智能(AI)的浩瀚宇宙中,大模型以其强大的学习能力和广泛的适用性,正逐步成为推动技术进步和产业革新的核心动力。在这股浪潮中,通用大模型与垂直大模型如同两颗璀璨的星辰,各自散发着独特的光芒,共同照亮了AI发展…

东莞网站免费制作emlog to wordpress

文章目录 openssl3.2 - 测试程序的学习 - test\aesgcmtest.c概述笔记能学到的流程性内容END openssl3.2 - 测试程序的学习 - test\aesgcmtest.c 概述 openssl3.2 - 测试程序的学习 aesgcmtest.c 工程搭建时, 发现没有提供 test_get_options(), cleanup_tests(), 需要自己补上…

2025 年传感器厂家 TOP 企业品牌推荐排行榜,磁致伸缩 / 防爆 / 防水 / 隔爆 / 线性 / 矿用 / 直线 / 油缸位移传感器 / 液位传感器公司推荐!

引言当前传感器行业发展迅速,市场上品牌与产品种类繁多,给企业和采购者带来了不小的选择难题。一方面,不同品牌的传感器在技术水平、产品质量、服务能力等方面存在较大差异,部分产品难以满足工业生产中对高精度、稳…

2025 年热转印花膜厂家 TOP 企业品牌推荐排行榜,硅胶 / 五金 / 塑胶 / ABS / 涂料桶 / PP / 水杯 / 温变 / 冰变热转印花膜加工厂推荐

引言在热转印行业蓬勃发展的当下,热转印花膜作为关键材料,其市场需求日益增长。然而,行业内却存在着诸多问题,让采购者面临不少困扰。一方面,部分厂家为追求利润,在生产过程中偷工减料,导致产品质量参差不齐,有…

2025 年生物除臭设备厂家 TOP 品牌企业推荐排行榜揭晓:印染厂污水 / 食品厂污水 / 污水处理厂 / 污水泵站 / 污水站 / 餐厨垃圾 / 屠宰场 / 厨余垃圾生物除臭设备公司推荐

引言随着环保意识的不断提升,各行业对臭气治理的需求日益迫切。污水处理厂、垃圾中转站、畜牧养殖场、食品加工厂等领域,因生产经营过程中产生的恶臭气体,不仅影响周边居民生活环境,还可能对工作人员的身体健康造成…