1、呈现效果

2、后端

1)服务层

/// <summary>
/// 删除指定修改日期段及指定路径下的所有文件
/// </summary>
/// <param name="filepath">指定路径</param>
/// <returns>返回删除结果提示</returns>
public string DeleteSpecifiedPathAllFile(FileInfomationArgs args)
{
if(args.IsNull()))
{
return "参数为空,请重新获取!";
}
try
{
DirectoryInfo info = new DirectoryInfo(args.FilePath);
// 去除文件夹的只读属性
info.Attributes = FileAttributes.Normal & FileAttributes.Directory;
// 去除文件的只读属性
File.SetAttributes(args.FilePath, FileAttributes.Normal);
// 判断文件夹是否存在
if(Directory.Exists(args.FilePath))
{
// 按指定修改时间段删除文件
if(args.StartTime != null && args.EndTime != null)
{
List < FileInfo > fileInfomations = null;
fileInfomations = info.GetFiles().Where(t => t.LastWriteTime >= args.StartTime && t.LastWriteTime <= args.EndTime).ToList();
foreach(var fileInfo in fileInfomations)
{
if(File.Exists(fileInfo.FullName))
{
// 如果有子文件则删除子文件
File.Delete(fileInfo.FullName);
}
else
{
// 循环递归删除子文件夹的所有文件
DeleteSpecifiedPathAllFile(args);
}
}
}
else // 删除指定路径的全部文件
{
foreach(var file in Directory.GetFileSystemEntries(args.FilePath))
{
if(File.Exists(file))
{
// 如果有子文件则删除子文件
File.Delete(file);
}
else
{
// 循环递归删除子文件夹的所有文件
DeleteSpecifiedPathAllFile(args);
}
}
}
// 删除已空文件夹(此步骤会删除指定目录的最底层文件夹,建议保留文件夹目录,此句注释)
// Directory.Delete(filepath, true);
}
return "当前文件修改日期段的指定路径下的所有文件删除成功!";
}
catch(Exception ex)
{
return "删除出现异常,异常原因为:" + ex.Message;
}
}

2)请求参数类

/// <summary>
/// 文件信息参数
/// </summary>
public class FileInfomationArgs
{
private string _FilePath = "";
/// <summary>
/// 指定路径
/// </summary>
public string FilePath
{
get
{
return _FilePath;
}
set
{
_FilePath = value;
}
}
private DateTime ? _StartTime = null;
/// <summary>
/// 指定修改时间开始时间段
/// </summary>
public DateTime ? StartTime
{
get
{
return _StartTime;
}
set
{
_StartTime = value;
}
}
private DateTime ? _EndTime = null;
/// <summary>
/// 指定修改时间结束时间段
/// </summary>
public DateTime ? EndTime
{
get
{
return _EndTime;
}
set
{
_EndTime = value;
}
}
}

3)接口层

/// <summary>
/// 删除指定路径下的所有文件
/// </summary>
/// <param name="filepath">指定路径</param>
/// <returns>返回删除结果提示</returns>
public Result string DeleteSpecifiedPathAllFile(FileInfomationArgs args);

4)控制层

/// <summary>
/// 删除指定路径下的所有文件
/// </summary>
/// <param name="filepath">指定路径</param>
/// <returns>返回删除结果提示</returns>
[HttpPost, HttpOptions]
public IActionResult DeleteSpecifiedPathAllFile(FileInfomationArgs args)
{
return ToJsonContent(_服务层注入.DeleteSpecifiedPathAllFile(args));
}

3、前端

<html>
<head></head>
<body>
<template>
<el-form size="small" :model="form" :rules="rules" ref="form" label-width="120px">
<div class="head_main">
<el-row :gutter="24">
<el-col :span="20">
<div class="key_tip">
【关于文件清理的说明】
<p style="color: red;">本页面功能主要是删除本地指定日期段及指定路径下的所有文件</p>
<p style="color: green;">☞指定路径:本地文件夹的绝对路径</p>
<p style="color: green;">☞指定日期段:本地文件夹下的文件的最新修改日期</p>
</div>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="12">
<el-form-item label="指定路径:" prop="filePath">
<el-input class="entity" type="textarea" clearable="" placeholder="请输入指定路径" v-model="form.filePath">
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="12">
<el-form-item label="指定日期段:" prop="operationTime">
<el-date-picker class="entity" v-model="operationTime" type="datetimerange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" clearable="" size="small" style="width:100%">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="15">
<el-col :span="24">
<el-form-item>
<el-button type="primary" des="el" @click="cleanUp">
清理
</el-button>
<el-button des="el" @click="reset">
重置
</el-button>
</el-form-item>
</el-col>
</el-row>
</div>
</el-form>
</template>
<script>
import { 方法名 } from '方法名所在JS文件' export default {
data () {
return {
form: {
filePath: '',
operationTime: '',
},
rules: {
filePath: [
{ required: true, message: '请输入指定路径', trigger: 'blur' },
],
},
}
},
created () {
},
methods: {
// 清理
cleanUp () {
this.$refs.form.validate(async (valid) => {
if (!valid) return
let startTime, endTime
if (this.operationTime) {
startTime = this.operationTime[0]
endTime = this.operationTime[1]
}
try {
await DeleteSpecifiedPathAllFile({
FilePath: this.form.filePath,
StartTime: startTime,
EndTime: endTime,
})
this.$notify({
type: 'success',
offset: 50,
title: '当前文件修改日期段的指定路径下的所有文件删除成功',
})
return
} catch (error) {
console.log('error:', error)
}
})
},
// 重置
reset () {
this.form.filePath = ''
this.operationTime = ''
},
},
}
</script>
<style lang="scss">
.head_main {
.key_tip {
box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04);
padding: 8px 16px;
background-color: #ecf8ff;
border-radius: 4px;
border-left: 5px solid #50bfff;
margin: 20px 0;
line-height: 22px;
}
}
</style>
</body>
</html>

代码和呈现效果如上所述。

注:指定路径为本地的绝对路径;指定日期段的判定依据是文件的修改日期

.net core + vue + elementui 删除指定日期段、指定路径下的所有文件的更多相关文章

  1. unity3d 依据指定的Assets下的目录路径 返回这个路径下的全部文件名称

    using UnityEngine; using System.Collections; using System.Collections.Generic; using System.IO; < ...

  2. python之实现循环查看指定路径下的所有文件---os.walk

    循环查看指定路径下的所有文件.文件夹,包含隐藏文件注:“.filename” 以点开头的是隐藏文件 import os for cur_path,cur_dirs,cur_files in os.wa ...

  3. Python3在指定路径下递归定位文件中出现的字符串

    [本文出自天外归云的博客园] 脚本功能:在指定的路径下递归搜索,找出指定字符串在文件中出现的位置(行信息). 用到的python特性: 1. PEP 318 -- Decorators for Fun ...

  4. Python小代码_15_遍历指定路径下的所有文件和文件夹,并格式化输出文件路径文件名和文件夹名,文件大小,修改时间

    遍历指定路径下的所有文件和文件夹,并格式化输出文件路径文件名和文件夹名,文件大小,修改时间 import osimport datetime def print_tree(dir_path): for ...

  5. Python复制指定目录的各个子目录下的同名文件到指定文件夹并重命名

    Python复制指定目录的各个子目录下的同名文件到指定文件夹并重命名 #编码类型 #-*- coding: UTF-8 -*- #导入包 import os import shutil srcpath ...

  6. mysql 获取指定日期到指定日期 区间段的日期

    第一种方法: cross join (就相当于mysql中的循环) CROSS JOIN 把两张表中的数据进行 N * M的组合,即笛卡尔积 这里的两张表利用 union all都有5条数据,所以进行 ...

  7. python删除执行路径下的空文件夹

    def rm_emp_dir(path): """ 删除指定路径下的空文件夹 :param path: 指定路径 :type path: str :return: Non ...

  8. 算法积累:解决如何获取指定文件夹路径或者文件路径下所有子文件后缀为.h .m .c的文本的行数

    1.先解决如何获取一个文件的代码行数 一开始对于这个问题,我的思路就回荡在:1字符串子字符串的判断 2循环直到结束的想法 3将原来是"\n"替换掉之类的想法 一个问题总会有多种解决 ...

  9. vue@cli3 项目模板怎么使用public目录下的静态文件,找了好久都不对,郁闷!

    作为图片最好放在static目录下,但是vue@cli3没有static,网上都说放在public目录下,行,那就放吧,可问题是图片放了怎么使用 第一次尝试 肯定用绝对路径这就不说了,用相对路径,we ...

  10. js实现指定日期增加指定月份

    首先,大致思路为: 1. 先将字符串格式的时间类型转化为Date类型 2. 再将Date类型的时间增加指定月份 3. 最后将Date类型的时间在转化为字符串类型 1.  先将字符串格式的时间类型转化为 ...

随机推荐

  1. PHPMQTT问题一二三

    问题一:PHPMQTT作为客户端订阅超过一定数量的主题后,系统就会报错. 思路:在网上查找原因,失败: 打开调试debug = true ; 结果proc方法中报错: eof receive 问题二: ...

  2. 10、数组a和b各有10个元素。将他们相同的位置元素逐个比较, 如果a中元素大于b中对应元素的次数多于b数组中元素大于a中元素的次数, 则认为a大于b。请统计大于等于小于的次数

    /* 数组a和b各有10个元素.将他们相同的位置元素逐个比较, 如果a中元素大于b中对应元素的次数多于b数组中元素大于a中元素的次数, 则认为a大于b.请统计大于等于小于的次数 */ #include ...

  3. Jmeter中通过V函数使Foreach控制器有多个输入变量

    需求:Foreach 控制器只能有一个输入变量.但是实际情况会出现需要使用多个变量. 如:上一个接口获取到多个字段且每个字段用Json提取器获取的时候都是一个集合,期望将获取到的字段传给下一个接口. ...

  4. Kubernetes专栏 | 安装部署(一)

    --随着云原生概念的普及,许多企业的业务纷纷上云,为了追求可靠性,稳定性,和弹性伸缩,提升资源利用率等需求.Kubernetes这个谷歌开源的容器编排平台已日益流行,被大家熟知和使用. 通常来说,Ku ...

  5. Maven工程卡在Resolving Maven dependencies,长时间不变

    添加:-Xms1024m -Xmx2048m 点apply.ok 秒解决

  6. 线上服务异常的定位、处理与优化的探索 - 第三章 Java虚拟机

    Java虚拟机   之所以引入关于JVM的篇章,是发现多数项目发生的线上问题很大的几率源自JVM调优配置不当引起.对JVM的内存模型.GC垃圾回收机制.调优方式有一个系统化的了解后,可以快速处理或避免 ...

  7. go-carbon 1.5.3 版本发布, 修复已知 bug 和新增俄罗斯语翻译文件

    carbon 是一个轻量级.语义化.对开发者友好的golang时间处理库,支持链式调用. 目前已被 awesome-go 收录,如果您觉得不错,请给个star吧 github.com/golang-m ...

  8. 安装es可视化软件Kibana

    一 Kibana介绍 Kibana 是一款开源的数据分析和可视化平台,它是 Elastic Stack 成员之一,设计用于和 Elasticsearch 协作. 您.可以使用 Kibana 对 Ela ...

  9. vulnhub靶场之DARKHOLE: 1

    准备: 攻击机:虚拟机kali.本机win10. 靶机:DarkHole: 1,下载地址:https://download.vulnhub.com/darkhole/DarkHole.zip,下载后直 ...

  10. vue 引入vant 上传图片oss处理

    <van-uploader :before-read="beforeRead" v-model="product.images" max-size=&qu ...