file.delete删除不了文件_非常实用的文件服务系统
devg-file文件服务系统,解决项目中文件存储痛点,文件自行管理,安全性好.
安装教程
1.客户端安装:
1.1 pom.xml配置
com.devg.file file-client 1.0.1.RELEASEorg.apache.httpcomponents httpclient 4.5.6org.apache.httpcomponents httpmime 4.5.6
1.2 代码示例
spring boot 1.2.1 配置文件 application.yml devg: file: bucket-name: shop upload-url: http://xxx.xxx.xxx.xxx:8080/devg-file/upload/ # uplad后面的反斜杠必须要有 socketTimeout: 30000 connectTimeout: 30000 connectionRequestTimeout: 30000 1.2.2 MultipartFile 文件上传 @RequestMapping("/uploadFile") public ResultModel uploadFile(@RequestParam(value = "upFile") MultipartFile upFile) { WebServiceRequest webServiceRequest = new WebUploadMultipartFile(); FileResponse fileResponse = webServiceRequest.invoke(upFile, RequestType.UPLOAD_FILE_RANDOM.getRequestType()); return ResultModel.newSuccess(fileResponse); } 1.2.3 File 文件上传 @RequestMapping("/uploadFile") public ResultModel uploadFile() { File file = new File("E:/duheng/微信图片_20200820144842.jpg"); WebServiceRequest webServiceRequest = new WebUploadFile(); FileResponse fileResponse = webServiceRequest.invoke(file, RequestType.UPLOAD_FILE_RANDOM.getRequestType()); return ResultModel.newSuccess(fileResponse); } 1.2.4 文件删除 @RequestMapping("/fileDelete") public ResultModel fileDelete() { String filePath = "shop/20200829/868aa049-779c-4209-8dfb-031c2365d0a2.jpg"; WebServiceRequest webServiceRequest = new WebDeleteFile(); FileResponse fileResponse = webServiceRequest.invoke(filePath, RequestType.DELETE_FILE.getRequestType()); return ResultModel.newSuccess(fileResponse); } java api 1.2.5 JAVA 文件上传 public FileResponse uploadFile(){ String uploadUrl = "http://xxx.xxx.xxx.xxx:8080/devg-file/upload/"; File file = new File("E:/年会1/DSC_0205.JPG"); FileClientConfig fileClientConfig = new FileClientConfig(); fileClientConfig.setUploadUrl(uploadUrl); fileClientConfig.setBucketName("shop"); fileClientConfig.setConnectionRequestTimeout(30000); fileClientConfig.setConnectTimeout(30000); fileClientConfig.setSocketTimeout(30000); WebServiceRequest webServiceRequest = new WebUploadFile(); FileResponse fileResponse = webServiceRequest.invoke(file, fileClientConfig, RequestType.UPLOAD_FILE_RANDOM.getRequestType()); return fileResponse; }
1.4 返回结果
{ "success": true, "code": 1, "message": "操作成功", "data": { "statusCode": 200, // http响应码 "code": "200", // 业务响应码 statusCod和code均为200才表示成功 "fileName": "37a59f9d-c0d4-462e-9270-ef48ae4758b7.jpg", // 上传后服务端存储文件名 "realFileName": "微信图片_20200820144842.jpg", // 上传文件名 "filePath": "shop/20200829/37a59f9d-c0d4-462e-9270-ef48ae4758b7.jpg", // 上传后服务端存储路径 "netPath": "http://xxxx.xxxx.xxxx.xxxx:8080/file/shop/20200829/37a59f9d-c0d4-462e-9270-ef48ae4758b7.jpg", // 网络访问地址 "fileType": ".jpg", // 文件后缀 "message": "上传成功", // 上传响应信息 "fileSize": 53536 // 上传文件大小 } }
2.服务端安装
2.1 安装tomcat服务
2.2 配置tomcat下面conf/server.xml (第1个docBase配置为application.properties里面的rootPath值,第2个docBase配置war包存放路径)
2.3 配置JVM参数:catalina.sh(根据实际情况设置)
JAVA_OPTS="$JAVA_OPTS $JSSE_OPTS" # Register custom URL handlers # Do this here so custom URL handles (specifically 'war:...') can be used in the security policy JAVA_OPTS="$JAVA_OPTS -Djava.protocol.handler.pkgs=org.apache.catalina.webresources" JAVA_OPTS="$JAVA_OPTS -Xms256M -Xmx256M"
2.4 配置文件修改:
application.properties rootPath=/opt/file (文件存放根目录) netPath=http://127.0.0.1:8080/file (文件访问地址) datasource.properties (数据源配置)
2.5 启动tomcat(./bin/startup.sh)
3.数据库脚本 (datasource.properties里面配置数据库连接)
CREATE TABLE `t_file` ( `FILE_ID` INT(11) NOT NULL AUTO_INCREMENT COMMENT '附件ID', `BUCKET_NAME` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '桶名称', `FILE_NAME` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '文件名', `FILE_TYPE` VARCHAR(10) NOT NULL DEFAULT '' COMMENT '文件后缀', `FILE_PATH` VARCHAR(200) NOT NULL DEFAULT '' COMMENT '文件存储位置', `NET_PATH` VARCHAR(200) NOT NULL DEFAULT '' COMMENT '文件访问地址', `REAL_FILE_NAME` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '原文件名', `FILE_SIZE` BIGINT(20) NULL DEFAULT '0' COMMENT '文件大小', `IS_DELETE` TINYINT(4) NOT NULL DEFAULT '0' COMMENT '是否删除', `IS_SYNC` TINYINT(4) NOT NULL DEFAULT '0' COMMENT '是否同步', `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`FILE_ID`) USING BTREE, INDEX `INDEX_FILE` (`IS_SYNC`) ) COMMENT='上传文件表' COLLATE='utf8_general_ci' ENGINE=InnoDB AUTO_INCREMENT=2; CREATE TABLE `t_sync_config` ( `SYNC_CONFIG_ID` INT(11) NOT NULL AUTO_INCREMENT COMMENT '同步ID', `SYNC_CONFIG_NAME` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '同步名', `IS_RUNNING` TINYINT(4) NOT NULL DEFAULT '0' COMMENT '是否正在同步', `IS_DELETE` TINYINT(4) NOT NULL DEFAULT '0' COMMENT '是否删除', `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`SYNC_CONFIG_ID`) USING BTREE, UNIQUE INDEX `UNI_INDEX` (`SYNC_CONFIG_NAME`) ) COMMENT='上传文件同步表' COLLATE='utf8_general_ci' ENGINE=InnoDB AUTO_INCREMENT=4; INSERT INTO `t_sync_config` (`SYNC_CONFIG_NAME`) VALUES ('FILE_SYNC');
gitee地址: https://gitee.com/devg/devg-file
file.delete删除不了文件_非常实用的文件服务系统相关推荐
- file.delete删除不了文件_巧用磁盘清理,彻底清除Windows系统垃圾文件
Windows系统升级安装后,旧的Windows文件仍驻留在系统安装盘根目录中,位于系统自动命名为"Windows.old"的文件夹中,成为了垃圾文件,占居了系统安装盘即C盘宝贵的 ...
- 解决File.Delete()删除不掉文件
首先注意以下问题: 此文件被使用的时候无法删除(比如网络输出没关闭流) 判断此文件是否存在再做删除(exists) 删除文件夹之前先删除文件夹下的所有文件(递归解决) 判断是否删除成功会有返回值,文件 ...
- Java中file.delete()删除文件失败
删除文件的方法: /*** 删除通过ftp上传到服务器H盘的文件* @param fileName 要删除的文件的文件名* @return 删除成功返回true,否则返回false*/private ...
- C#使用FIle.delete删除文件/文件夹提示对路径的访问被拒绝——解决方案
平台:Win10+VS2015 在写一个根据指定的文件夹名或文件后缀删除所给目录下文件夹的小程序 ,运行时提示"对xxx路径的访问被拒绝",导致删除失败. 解决方案如下:若删除的是 ...
- java批量删除日志文件_日志清理与文件批量删除
工具下载地址:小工具 作为一个开发人员,一个一线的码农,我们在写程序的时候往往会给自己的程序添加很多的日志输出,这是一个好习惯,但是很多程序员却没有在程序里面增加日志定期清除的好习惯,从事IT领域十多 ...
- mysql进程删除文件_完全卸载mysql 停止服务、卸载相关程序、删除注册表
3.运行"regedit"文件,如图,打开注册表 删除注册表数据,通过regedit,删除以下几个文件[也可以在注册表里搜索mysql]:HKEY_LOCAL_MACHINE/SY ...
- JAVA删除pdf空白页_如何编辑PDF文件,如何删除PDF文档中的空白页
时代在发展,科技在进步,我们现在日常使用的文件也发展了,以前只有Word跟TXT,现在还增加了一个PDF格式的文件,但PDF格式的文件跟Word和TXT文件不一样,Word跟TXT文件可以直接的打开编 ...
- gi克隆github文件_如何构建GitHub文件搜索功能的克隆
gi克隆github文件 In this article, we will build a project that mimics the lesser known but awesome file ...
- cmd 将文件夹下文件剪切到另外一个文件_总结java中文件拷贝剪切的5种方式-JAVA IO基础总结第五篇...
本文是Java IO总结系列篇的第5篇,前篇的访问地址如下: 总结java中创建并写文件的5种方式-JAVA IO基础总结第一篇 总结java从文件中读取数据的6种方法-JAVA IO基础总结第二篇 ...
最新文章
- CCNA课堂练习二:路由协议EIGRP简单介绍与配置
- Python【每日一问】21
- dell r740如何做raid_戴尔入门级4K、IPS广色域显示器:S2721QS表现如何?
- 老师:你根本不知道我有多想逃课
- shell关闭指定进程
- 以“基”取胜:戴尔科技云平台 释放企业新动能
- Multi-Architecture镜像制作指南已到,请查收!
- CCS10.2.0安装教程
- Zigbee 2006介绍+资料+源代码下载
- XMind 8 pro 破解教程
- nagios原理介绍以及安装部署配置使用
- font color=red[置顶]/font
- 全方位教你怎么看懂英国的车牌
- Windows远程桌面连线显示请稍后
- 信息学奥赛一本通C++语言-----1087:级数求和
- C++冗杂易忘基础知识整合
- Win10任务栏程序设置显示最近使用项
- 单片机节日彩灯实训报告_《单片机的原理与应用》节日彩灯的设计
- 《京韵大鼓——大西厢》(骆玉笙)(唱词文本)
- Redis的原理分析
热门文章
- WebDev.WebServer.exe遇到问题需要关闭
- 7-Arco大讲堂(二)
- java jframe tab_java Swing实现选项卡功能(JTabbedPane)实例代码
- ft232h引脚_一种基于芯片ft232h的usb接口电路的制作方法
- 如何探测局域网中某台主机是否开机_「渲染」3Dmax 分布式渲染,局域网渲染,联机渲染教程...
- python的进程和线程定位_Python | 进程 线程的理解拾遗
- 成毅高清电脑桌面壁纸
- python中的常量是指_python入门教程04-01(python语法入门之变量)
- LeetCode 长度最小的子数组
- 关于音乐中气息的练习