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

简介: # 1、呈现效果![image.png](https://ucc.alicdn.com/pic/developer-ecology/j2ygdazy447va_0782583bbc894c33a079db9e44385acd.png)# 2、后端## 1)服务层```csharp/// <summary>/// 删除指定修改日期段及指定路径下的所有文件/// </summary>/// <param name="filepath">指定路径</param>/// <returns>返回删除结果提示</returns>public string DeleteSpecif

1、呈现效果

image.png

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>

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

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

以上就是MySQL 版本号排序的介绍,做此记录,如有帮助,欢迎点赞关注收藏!

目录
相关文章
|
1月前
vue3+Ts 二次封装ElementUI form表单
【10月更文挑战第8天】
190 59
|
4天前
|
设计模式 开发框架 JavaScript
基于.NET8 + Vue/UniApp前后端分离的快速开发框架,开箱即用!
基于.NET8 + Vue/UniApp前后端分离的快速开发框架,开箱即用!
|
1月前
|
存储 开发框架 JSON
ASP.NET Core OData 9 正式发布
【10月更文挑战第8天】Microsoft 在 2024 年 8 月 30 日宣布推出 ASP.NET Core OData 9,此版本与 .NET 8 的 OData 库保持一致,改进了数据编码以符合 OData 规范,并放弃了对旧版 .NET Framework 的支持,仅支持 .NET 8 及更高版本。新版本引入了更快的 JSON 编写器 `System.Text.UTF8JsonWriter`,优化了内存使用和序列化速度。
|
5天前
Visual Studio 快速分析 .NET Dump 文件
【11月更文挑战第10天】.NET Dump 文件是在 .NET 应用程序崩溃或出现问题时生成的,记录了应用程序的状态,包括内存对象、线程栈和模块信息。通过分析这些文件,开发人员可以定位和解决内存泄漏、死锁等问题。在 Visual Studio 中,可以通过调试工具、内存分析工具和符号加载等功能来详细分析 Dump 文件。此外,还可以使用第三方工具如 WinDbg 进行更深入的分析。
|
30天前
|
JavaScript UED
Vue + ElementUI 实现动态添加和删除表单项的多层嵌套表单
【10月更文挑战第5天】本示例展示了如何在 Vue.js 中使用 Element UI 组件实现动态添加和删除嵌套表单项。该表单包含设备信息、设备部位及其对应的任务列表,支持用户动态添加设备部位和任务,并提供相应的表单验证规则。
121 0
Vue + ElementUI 实现动态添加和删除表单项的多层嵌套表单
|
2月前
|
开发框架 监控 前端开发
在 ASP.NET Core Web API 中使用操作筛选器统一处理通用操作
【9月更文挑战第27天】操作筛选器是ASP.NET Core MVC和Web API中的一种过滤器,可在操作方法执行前后运行代码,适用于日志记录、性能监控和验证等场景。通过实现`IActionFilter`接口的`OnActionExecuting`和`OnActionExecuted`方法,可以统一处理日志、验证及异常。创建并注册自定义筛选器类,能提升代码的可维护性和复用性。
|
2月前
|
开发框架 .NET 中间件
ASP.NET Core Web 开发浅谈
本文介绍ASP.NET Core,一个轻量级、开源的跨平台框架,专为构建高性能Web应用设计。通过简单步骤,你将学会创建首个Web应用。文章还深入探讨了路由配置、依赖注入及安全性配置等常见问题,并提供了实用示例代码以助于理解与避免错误,帮助开发者更好地掌握ASP.NET Core的核心概念。
93 3
|
1月前
|
开发框架 JavaScript 前端开发
一个适用于 ASP.NET Core 的轻量级插件框架
一个适用于 ASP.NET Core 的轻量级插件框架
|
1月前
|
C# Windows
一款基于.NET开发的简易高效的文件转换器
一款基于.NET开发的简易高效的文件转换器
|
1月前
|
JavaScript
Vue启动时报错的解决方案,以及解决相同路径跳转报错的问题
Vue启动时报错的解决方案,以及解决相同路径跳转报错的问题
222 0