在上传目录中创建文件夹以保存图像

本文关键字:文件夹 保存 图像 创建 | 更新日期: 2023-09-27 18:17:06

我有一个controller method,可以很好地在Uploads文件夹中上传图像。我尝试在其中创建一个日期文件夹,这样我就可以将图像分组在相关的日期文件夹中。但Directory.CreateDirectory()不是在我现有的Uploads文件夹中创建一个文件夹。我在SaveAs()方法上得到一个异常

can't find the directory: MyApp/Uploads/10-11-2015

我的动作方法

 [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create(ProductViewModel productViewModel)
        {
            var ValidImageTypes = new string[]{
                "image/gif",
                "image/jpeg",
                "image/jpg",
                "image/png"
            };
            if(!ValidImageTypes.Contains(productViewModel.ImageUpload.ContentType))
            {
                ModelState.AddModelError("ImageUpload", "Please upload gif / jpg / png");
            }
            if (ModelState.IsValid)
            {
                var product = new Products
                {
                    Name = productViewModel.Name
                };
                var UploadDir = "/Uploads/" + DateTime.Now.ToString("dd/MM/yyyy") + "";
                var FolderUploadDir = DateTime.Now.ToString("dd/MM/yyyy");
                    Directory.CreateDirectory("~/Uploads/" + FolderUploadDir);
                //Saving the image
                productViewModel.ImageUpload.SaveAs(ImagePath);
            return View("Index");
            }

在上传目录中创建文件夹以保存图像

文件/文件夹名称dd/MM/yyyy使用的日期格式字符串无效。文件/文件夹名称中不允许使用字符" / "。您可以使用dd-MM-yyyy代替

我自己弄清楚了,我需要为CreateDirectory()方法提供服务器的正确路径。下面的代码达到了这个目的

var FolderUploadDir = Server.MapPath("~/Uploads/"+DateTime.Now.ToString("dd-MM-yyyy"));
Directory.CreateDirectory(FolderUploadDir);

尝试在目录地址中使用''而不是/