예제 #1
0
        public async Task <IActionResult> ModifyFilenameAsync(string id)
        {
            string newFileName = "";
            string reqBody     = "";
            await System.Threading.Tasks.Task.FromResult(0);

            try
            {
                //read request body
                using (var reader = new StreamReader(Request.Body))
                {
                    var body = reader.ReadToEnd();
                    reqBody = body.ToString();
                }
                //get new filename
                if (!string.IsNullOrEmpty(reqBody))
                {
                    var content = JObject.Parse(reqBody);
                    newFileName = (string)content["newName"];
                    newFileName = Regex.Replace(newFileName, "[\n\r\t]", string.Empty);
                    newFileName = Regex.Replace(newFileName, @"\s", string.Empty);
                }

                if (!string.IsNullOrEmpty(newFileName))
                {
                    //if same name exist - BadRequest
                    foreach (var record in responseData)
                    {
                        if (record.Id.ToLower() == newFileName.ToLower())
                        {
                            return(BadRequest(new { message = "File with same name already exists." }));
                        }
                    }
                    //rename the file and/or folder
                    foreach (var record in responseData)
                    {
                        if (record.Id.ToString() == id)
                        {
                            var newfilePath = record.FilePath.Replace($"{id}.{record.Extension}", $"{newFileName}.{record.Extension}");
                            FileFolderHelper.RenameFile(record.FilePath, newfilePath);
                            var newRecord = new ModelResponse()
                            {
                                Created_on = record.Created_on,
                                Edited_on  = record.Edited_on,
                                Extension  = record.Extension,
                                FilePath   = newfilePath,
                                Id         = newFileName,
                                MimeType   = record.MimeType,
                                Name       = $"{newFileName}.{record.Extension}",
                                Properties = record.Properties,
                                Size       = record.Size,
                                Type       = record.Type,
                                Url        = record.Url.Replace(id, newFileName),
                                User       = record.User
                            };
                            ModelPayload.Create(newRecord);
                            ModelPayload.RemoveOnlyFromModelPayload(id);
                            return(Json(newRecord));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                return(BadRequest(new { message = "Renaming file failed.", exception = ex.StackTrace }));
            }

            return(BadRequest(new { message = "Renaming file failed." }));
        }