예제 #1
0
        public async Task <ActionResult> Upload(UploadFileItemModel model)
        {
            if (!ModelState.IsValid)
            {
                return(Json(new OperationResult {
                    Status = OperationStats.Error,
                    Errors = GetErrors(ModelState)
                }));
            }

            model.Path = model.Path.Trim('/');
            List <FileItem> listToAdd = new List <FileItem>();

            //var rootPath = model.Path.TrimEnd('/').Remove(model.Path.LastIndexOf('/'));
            //FileItem sibling = await db.FileItems.FirstOrDefaultAsync(x => x.Path.Equals(rootPath));

            try {
                var absPath = Server.MapPath(string.Concat(model.Path.Replace("ROOT", RootPath), "/", model.PostedFile.FileName));
                if (System.IO.File.Exists(absPath))
                {
                    return(Json(new OperationResult {
                        Status = OperationStats.Error,
                        Message = string.Format(StringResources.ItemAlreadyExists, model.PostedFile.FileName)
                    }));
                }

                model.PostedFile.SaveAs(absPath);
                listToAdd.Add(new FileItem {
                    Name     = model.PostedFile.FileName,
                    MimeType = model.PostedFile.ContentType,
                    Path     = model.Path.Trim('/'),
                    CDate    = DateTime.UtcNow,
                    MDate    = DateTime.UtcNow,
                    FileId   = model.Id
                });

                if (!listToAdd.Any())
                {
                    return(Json(new OperationResult {
                        Status = OperationStats.Error,
                        Message = StringResources.UnknownErrorOccurred
                    }));
                }

                db.FileItems.AddRange(listToAdd);
                await db.SaveChangesAsync();

                return(Json(new OperationResult {
                    Status = OperationStats.Success,
                    Message = string.Format(StringResources.SuccessfullyUploaded, model.PostedFile.FileName)
                }));
            } catch (Exception ex) {
                throw;
            }
        }
        public async Task <ActionResult> Upload(UploadFileItemModel model)
        {
            if (!ModelState.IsValid)
            {
                return(Json(new OperationResult
                {
                    Status = OperationStats.Error,
                    Errors = GetErrors(ModelState)
                }));
            }

            model.Path = model.Path.Trim('/');
            List <FileItem> listToAdd = new List <FileItem>();
            FileItem        sibling   = await db.FileItems.FirstOrDefaultAsync(x => x.Path.Equals(model.Path));

            try
            {
                var absPath = _hosting.ContentRootPath + model.Path.Replace("ROOT", RootPath).Replace("/", "\\") + "\\" + model.PostedFile.FileName;
                if (absPath.Contains("\\\\"))
                {
                    absPath = absPath.Replace("\\\\", "\\");
                }
                if (System.IO.File.Exists(absPath))
                {
                    return(Json(new OperationResult
                    {
                        Status = OperationStats.Error,
                        Message = string.Format(StringResources.ItemAlreadyExists, model.PostedFile.FileName)
                    }));
                }
                model.PostedFile.CopyTo(new FileStream(absPath, FileMode.Create));
                //model.PostedFile.SaveAs(absPath);
                listToAdd.Add(new FileItem
                {
                    Name     = model.PostedFile.FileName,
                    MimeType = model.PostedFile.ContentType,
                    Path     = model.Path.Trim('/'),
                    CDate    = DateTime.UtcNow,
                    MDate    = DateTime.UtcNow,
                    FileId   = sibling?.FileId
                });

                if (!listToAdd.Any())
                {
                    return(Json(new OperationResult
                    {
                        Status = OperationStats.Error,
                        Message = StringResources.UnknownErrorOccurred
                    }));
                }

                db.FileItems.AddRange(listToAdd);
                await db.SaveChangesAsync();

                return(Json(new OperationResult
                {
                    Status = OperationStats.Success,
                    Message = string.Format(StringResources.SuccessfullyUploaded, model.PostedFile.FileName)
                }));
            }
            catch (Exception ex)
            {
                return(Json(new OperationResult
                {
                    Status = OperationStats.Success,
                    Message = StringResources.CodeError
                }));
            }
        }