Controllers/FileUploadController.cs

(开头部分) 2KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using System.Text;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
using Tmp.Models;

namespace Tmp.Controllers;

[Route("upload")]
public class FileUploadController: Controller
{
    private readonly string _uploadPath;// 设置文件上传的目标路径
    private readonly long _maxFileSize;

    private DownloadLimit _limit;
    public FileUploadController(IOptions<Configuration> config,DownloadLimit limit)
    {
        _maxFileSize = config.Value.MaxFileSize;
        _uploadPath = config.Value.UploadPath;
        _limit = limit;
    }
    [HttpPost("multiple/{hash}")]
    public async Task<IActionResult> UploadMultipleFiles(List<IFormFile> files,int hash)
    {
        try
        {
            var builder = new StringBuilder();
            long size = 0;
            foreach (var formFile in files)
            {
                size += formFile.Length;
                builder.Append(formFile.FileName+formFile.Length);
                if (formFile.Length > _maxFileSize)
                {
                    return BadRequest("至少存在一个文件,该文件体积过大");
                }
            }

            if (size > _limit.CurrentDownload)
            {
                return BadRequest("达到文件上传限制,请尝试小的文件,或者联系管理员.");
            }

            //builder.Append(DateTime.Now.Hour);
            var calHash = builder.ToString().GetHashCode();
            if (calHash != hash)
            {
                return BadRequest("不允许非法上传文件");
            }
            if(Directory.Exists(Path.Combine(_uploadPath,""+calHash)))
            {
                // 无需上传,已经存在相关文件组
            }
            else
            {
                foreach (var file in files)
                {
                    if (file.Length > 0)
                    {
                        var filePath = Path.Combine(_uploadPath,""+calHash, file.FileName);
                        var directoryPath = Path.GetDirectoryName(filePath);
后面还有 22 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。