Пример #1
0
        /// <summary>
        /// ذخیره فایل در مسیر روت برنامه
        /// </summary>
        /// <param name="file">فایل دریافتی از کلاینت</param>
        /// <param name="FolderName">نام پوشه میتواند به این شکل باشد : Folder/Subfolder/SubOfSubFolder</param>
        /// <param name="FileType">نوع فایل مجاز</param>
        /// <param name="StopExtentions">فرمت های غیر مجاز : png,gif</param>
        /// <param name="_environment">تزریق شده به کنترلر برنامه </param>
        /// <returns></returns>
        internal static async Task <(bool, string)> UploadFileAsync(IFormFile file, string FolderName, FileType fileType, List <string> AllowdExtention, HostingEnvironment _environment)
        {
            try
            {
                if (file != null)
                {
                    string Message = Message = "فایل وارد شده مجاز نمی باشد";

                    //check file Type in Dot net core is Null
                    //file.ContentType.StartsWith(fileType.ToString()))
                    string Extention = file.FileName.Substring(file.FileName.LastIndexOf('.'));
                    if (!AllowdExtention.Contains(Extention))
                    {
                        return(false, Message);
                    }
                    var uploadsRootFolder = Path.Combine(_environment.WebRootPath, FolderName);
                    if (!Directory.Exists(uploadsRootFolder))
                    {
                        Directory.CreateDirectory(uploadsRootFolder);
                    }
                    string uinqName = Const.Generatetoken();
                    var    fileName = $"{uinqName}.{Extention}";

                    var filePath = Path.Combine(uploadsRootFolder, fileName);
                    using (var fileStream = new FileStream(filePath, FileMode.Create))
                    {
                        await file.CopyToAsync(fileStream).ConfigureAwait(false);
                    }
                    return(true, fileName);
                }
                else
                {
                    return(false, "فایلی دریافت نشد");
                }
            }
            catch (Exception ex)
            {
                return(false, ex.Message);
            }
        }