diff --git "a/\346\235\250\345\270\206/2022-06-20-WebApi-\347\254\254\345\215\201\344\270\211\350\257\276.md" "b/\346\235\250\345\270\206/2022-06-20-WebApi-\347\254\254\345\215\201\344\270\211\350\257\276.md"
new file mode 100644
index 0000000000000000000000000000000000000000..18384a180b5e4560cf38af98200e9853ccb2e868
--- /dev/null
+++ "b/\346\235\250\345\270\206/2022-06-20-WebApi-\347\254\254\345\215\201\344\270\211\350\257\276.md"
@@ -0,0 +1,75 @@
+# 2022-06-20-WebApi-第十三课
+
+## 上传文件
+
+获取文件信息
+```cs
+public void PostUpload(IFormCollection files)
+{
+    foreach (var formFile in files.Files)
+    {
+        // 获取文件大小,用于判断文件是否为空和上传到数据库
+        var fileSize = formFile.Length;
+
+        // 接受到的文件名,用于上传到数据库
+        var fileName = formFile.FileName.Substring(0, formFile.FileName.IndexOf("."));
+
+        // 接受到的文件扩展名
+        var extName = formFile.FileName.Substring(formFile.FileName.IndexOf("."));
+    }
+}
+```
+
+```cs
+public async Task<string> PostUpload(IFormCollection files)
+{
+    // 当前路径(完整路径)
+    var currentPath = Directory.GetCurrentDirectory();
+
+    // 配置路径(相对路径)
+    var configPath = _configuration.GetSection("UploadFileSetting").GetValue<string>("FilePath");
+
+    // 用于装载文件的相对路径
+    var list = new List<string>();
+
+    var now = DateTime.Now;
+    // 配置路径 + 年 + 月 + 日的路径
+    var preFilePath = Path.Combine(configPath, now.Year.ToString(), now.Month.ToString(), now.Day.ToString());
+
+    foreach (var formFile in files.Files)
+    {
+        // 获取文件大小,用于判断文件是否为空和上传到数据库
+        var fileSize = formFile.Length;
+
+        // 随机生产文件名称,保证安全
+        var rndName = Guid.NewGuid().ToString("N");
+
+        // 接受到的文件名,用于上传到数据库
+        var fileName = formFile.FileName.Substring(0, formFile.FileName.IndexOf("."));
+
+        // 接受到的文件扩展名
+        var extName = formFile.FileName.Substring(formFile.FileName.IndexOf("."));
+
+        // 新的文件名(随机文件名+扩展名)
+        var newFileName = rndName + extName;
+
+        // 完整的文件名称(包含当前路径、配置路径、年、月、日、新文件名)
+        var fullName = Path.Combine(currentPath, preFilePath, newFileName);
+
+        // 利用文件流创建文件,写入到磁盘
+        using (var stream = System.IO.File.Create(fullName))
+        {
+            await formFile.CopyToAsync(stream);
+        }
+
+        // 用于返回数据
+        list.Add(Path.Combine(configPath, preFilePath, newFileName);
+    }
+
+    return new {
+        Code = 1000,
+        Msg = "上传文件成功",
+        FilePath = list
+    }.JsonSerialize();
+}
+```
diff --git "a/\346\235\250\345\270\206/2022-06-21-WebApi-\347\254\254\345\215\201\345\233\233\350\257\276.md" "b/\346\235\250\345\270\206/2022-06-21-WebApi-\347\254\254\345\215\201\345\233\233\350\257\276.md"
new file mode 100644
index 0000000000000000000000000000000000000000..d61bba2398cfa38baec23933445d060e6c1d09f2
--- /dev/null
+++ "b/\346\235\250\345\270\206/2022-06-21-WebApi-\347\254\254\345\215\201\345\233\233\350\257\276.md"
@@ -0,0 +1,61 @@
+# 2022-06-21-WebApi-第十四课
+
+## 添加约束
+
+设置约束信息,如 类型、大小等  
+在appsettings文件中  
+```cs
+// 属性名称由自己定义
+"UploadFileSetting": {
+    "Path": "UploadFiles",      // 上传的文件存放文件夹的名称
+    "FileType": ".jpg,.txt",    // 文件类型约束
+    "MaxSize": "2048"           // 文件大小约束 单位字节
+  }
+```
+
+```cs
+// 从配置文件中获取允许上传的扩展名,以逗号分隔的字符串
+var permittedExtensions = _configuration.GetSection("UploadFileSetting").GetValue<string>("FileType").Split(',');
+
+// 从配置文件中获取允许上传的文件最大大小,单位字节
+var maxSize = _configuration.GetSection("UploadFileOption").GetValue<long>("MaxSize");
+
+// 查找上传文件的扩展名是否符合约束条件,如果不符合,则全部拒绝上传    
+var uploadedFileExtens = files.Files.Where(x =>
+{
+    var ext = Path.GetExtension(x.FileName).ToLowerInvariant();
+    return string.IsNullOrEmpty(ext) || !permittedExtensions.Contains(ext);
+}).Count();
+
+if (uploadedFileExtens > 0)
+{
+    return list;
+}
+
+// 查找上传文件的文件大小是否超过约束的最大值,如果超过了,则全部拒绝上传   
+var uploadeFileMaxSize = files.Files.Where(x =>
+{
+    return x.Length > maxSize;
+}).Count();
+
+if (uploadeFileMaxSize > 0)
+{
+    return list;
+}
+
+```
+
+## 添加到数据库
+```cs
+// 上传到数据库的对象
+var obj = new UploadFiles
+{
+    OldFileName = filename,                 // 原始文件名
+    NewFileName = newFileName,              // 新的文件名
+    FileType = extName,                     // 文件类型
+    FileSize = formFile.Length.ToString(),  // 文件大小
+    FilePath = configPath                   // 文件的(相对)路径
+};
+
+_uploadFiles.Add(obj);
+```