/// <summary>
        /// Saves all the modified default.config and .packageconfig files to disk.
        /// </summary>
        /// <returns> Results of the save operations. </returns>
        /// <remarks>This method is not thread-safe.</remarks>
        public FileSaveResult[] Save()
        {
            FileSaveResult[] results = new FileSaveResult[_modifiedDocuments.Count];
            int arraySaveIndex       = 0;

            foreach (XDocument document in _modifiedDocuments.Keys)
            {
                string savePath = _documentPaths[document];
                Trace.WriteLine($"Saving modified config file: {savePath}");
                try
                {
                    string extension = Path.GetExtension(savePath).ToLowerInvariant();

                    XmlWriterSettings writeSettings = extension == ".packageconfig"
                        ? _packageconfigWriteSettings
                        : _defaultconfigWriteSettings;

                    using XmlWriter writer = XmlWriter.Create(savePath, writeSettings);
                    document.Save(writer);
                    results[arraySaveIndex++] = new FileSaveResult(savePath);
                    Trace.WriteLine("Save success.");
                }
                catch (Exception e)
                {
                    results[arraySaveIndex++] = new FileSaveResult(savePath, e);
                    Trace.WriteLine($"Save failed with exception:{e.ToString()}");
                }
            }

            return(results);
        }
 public FileSaveResult Write(string path, IList <string> data)
 {
     try
     {
         using (var writer = File.CreateText(path))
         {
             foreach (var dataLine in data)
             {
                 writer.WriteLine(dataLine);
             }
         }
         return(FileSaveResult.Success());
     }
     catch (Exception ex)
     {
         return(FileSaveResult.Failure($"Unable to save a file. Message: {ex.Message}, Stacktrace: {ex.StackTrace}"));
     }
 }
        private FileSaveResult SaveImage(string folderName)
        {
            try
            {
                var fileSaveResult = new FileSaveResult();
                if (HttpContext.Request.Form.Files == null || HttpContext.Request.Form.Files.Count == 0)
                {
                    return(fileSaveResult);
                }

                var files     = HttpContext.Request.Form.Files;
                var filenames = new List <string>();
                foreach (var Image in files)
                {
                    if (Image != null && Image.Length > 0)
                    {
                        var imageStream = Image.OpenReadStream();

                        var uploads = Path.Combine(this.hostingEnvironment.WebRootPath, folderName);
                        if (Image.Length > 0)
                        {
                            var fileName = Guid.NewGuid().ToString().Replace("-", "") + Path.GetExtension(Image.FileName);
                            using (SixLabors.ImageSharp.Image image = SixLabors.ImageSharp.Image.Load(imageStream))
                            {
                                var height = (int)Math.Round(0.5 * image.Height);
                                var width  = (int)Math.Round(0.5 * image.Width);

                                image.Mutate(x => x.Resize(width, height));
                                image.Save($"{uploads}/{fileName}"); // Automatic encoder selected based on extension.
                            }
                            filenames.Add(fileName);
                            fileSaveResult.FileIsThere = true;
                        }
                    }
                }
                fileSaveResult.FileNames = filenames;
                return(fileSaveResult);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
示例#4
0
        public ActionResult Create(int folderId, FormCollection formData)
        {
            DocumentViewModel model = GetModel(null);

            UpdateModel(model.Instance, formData);

            if (ModelState.IsValid)
            {
                HttpPostedFileBase file = Request.Files[0];
                // Deal with file data
                if (null != file && file.ContentLength > 0)
                {
                    FileSaveResult fileResult = FileHelper.SaveFile(model.Instance.Title, file);
                    if (fileResult.IsSuccessful)
                    {
                        model.Instance.Title        = fileResult.Title;
                        model.Instance.OriginFile   = file.FileName;
                        model.Instance.ContentUri   = fileResult.FileUri;
                        model.Instance.OriginSource = "Document";
                        model.Instance.IssuedDate   = DateTime.Now;

                        // Save data
                        IFacadeUpdateResult <DocumentData> result = Service.SaveDocument(model.Instance);
                        if (result.IsSuccessful)
                        {
                            DocumentDto savedRef = result.ToDto(new DocumentConverter());
                            return(RedirectToAction(DetailAction, new { id = savedRef.Id }));
                        }
                        else
                        {
                            ProcUpdateResult(result.ValidationResult, result.Exception);
                        }
                    }
                    else
                    {
                        // TODO: file save exception
                    }
                }
            }

            model.FolderTree = GetCurrentFolderTree(folderId);
            return(View(model));
        }
示例#5
0
        public async Task <FileSaveResult> SaveImage(string folderPath)
        {
            try
            {
                var fileSaveResult = new FileSaveResult();
                if (HttpContext.Request.Form.Files == null || HttpContext.Request.Form.Files.Count == 0)
                {
                    return(fileSaveResult);
                }

                var files     = HttpContext.Request.Form.Files;
                var filenames = new List <string>();
                foreach (var Image in files)
                {
                    if (Image != null && Image.Length > 0)
                    {
                        var file = Image;

                        var uploads = Path.Combine(GlobalConfig.WebRootPath, folderPath);
                        if (file.Length > 0)
                        {
                            //var fileName = Guid.NewGuid().ToString().Replace("-", "") + Path.GetExtension(file.FileName);
                            var fileName = file.FileName.Replace(" ", "_");
                            using (var fileStream = new FileStream(Path.Combine(uploads, fileName), FileMode.Create))
                            {
                                await file.CopyToAsync(fileStream);

                                filenames.Add(fileName);
                                fileSaveResult.FileIsThere = true;
                            }
                        }
                    }
                }
                fileSaveResult.FileNames = filenames;
                return(fileSaveResult);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
示例#6
0
        public static string FileSaveResultToString(FileSaveResult fsr)
        {
            string str;

            switch (fsr.Code)
            {
            case FileSaveResultCode.Success:
                str = KPRes.Success;
                break;

            case FileSaveResultCode.UnknownError:
                str = KPRes.UnknownError;
                break;

            case FileSaveResultCode.FileCreationFailed:
                str = KPRes.FileCreationError;
                break;

            case FileSaveResultCode.IOException:
                str = KPRes.IOError;
                break;

            case FileSaveResultCode.SecurityException:
                str = KPRes.InternalSecurityException;
                break;

            default:
                str = KPRes.UnknownError;
                break;
            }

            if ((fsr.Message != null) && (fsr.Message.Length > 0))
            {
                str += "\r\n\r\n" + fsr.Message;
            }

            return(str);
        }
        private void CollectValues(DucValueDto ducValue, NameValueCollection formData, DucTypes ducType, ReferenceInfoDto reference)
        {
            switch (ducType)
            {
            case DucTypes.SubTitle:
            case DucTypes.Text:
            case DucTypes.TextArea:
                ducValue.ValueText = formData[DucHelper.GetClientId(ducValue.DucId)];
                break;

            case DucTypes.Html:
            case DucTypes.HtmlArea:
                ducValue.ValueHtml = formData[DucHelper.GetClientId(ducValue.DucId)];
                break;

            case DucTypes.Image:
                string fileId   = string.Format(UIConst.FileKeyFormatString, DucHelper.GetClientId(ducValue.DucId));
                string colTitle = string.Format(UIConst.ImageTitleKeyFormatString, DucHelper.GetClientId(ducValue.DucId));
                string title    = formData[colTitle];
                // Deal with image upload
                HttpPostedFileBase file = Request.Files[fileId];
                if (null != file && file.ContentLength > 0)
                {
                    // Save file and get result
                    FileSaveResult fileResult = FileHelper.SaveFile(title, file);
                    if (fileResult.IsSuccessful)
                    {
                        ducValue.ValueUrl  = fileResult.FileUri;
                        ducValue.ValueText = fileResult.Title;
                        // Save image as Document
                        DocumentDto document = new DocumentDto();
                        document.Title        = fileResult.Title;
                        document.ContentUri   = fileResult.FileUri;
                        document.OriginFile   = file.FileName;
                        document.OriginSource = "Reference";
                        document.IssuedDate   = DateTime.Now;
                        IDocumentService service = ServiceLocator.Current.GetInstance <IDocumentService>();
                        IFacadeUpdateResult <DocumentData> result = service.SaveDocument(document);
                    }
                    else
                    {
                    }
                }
                else
                {
                    string col1Name = string.Format(UIConst.ValueUrlKeyFormatString, DucHelper.GetClientId(ducValue.DucId));
                    string col2Name = string.Format(UIConst.ValueTextKeyFormatString, DucHelper.GetClientId(ducValue.DucId));
                    ducValue.ValueUrl  = formData[col1Name];
                    ducValue.ValueText = formData[col2Name];
                }
                break;

            case DucTypes.Integer:
                int valueInteger;
                if (int.TryParse(formData[DucHelper.GetClientId(ducValue.DucId)], out valueInteger))
                {
                    ducValue.ValueInt = valueInteger;
                }
                break;

            case DucTypes.Hyperlink:
                string col3Name = string.Format(UIConst.ValueUrlKeyFormatString, DucHelper.GetClientId(ducValue.DucId));
                string col4Name = string.Format(UIConst.ValueTextKeyFormatString, DucHelper.GetClientId(ducValue.DucId));
                ducValue.ValueUrl  = formData[col3Name];
                ducValue.ValueText = formData[col4Name];
                break;

            case DucTypes.Datetime:
                break;

            case DucTypes.ReferenceList:
                string col21Name = string.Format(UIConst.ValueIntKeyFormatString, DucHelper.GetClientId(ducValue.DucId));
                string col22Name = string.Format(UIConst.ValueTextKeyFormatString, DucHelper.GetClientId(ducValue.DucId));
                int    valueInt;
                if (int.TryParse(formData[col21Name], out valueInt))
                {
                    ducValue.ValueInt = valueInt;
                }
                ducValue.ValueText = formData[col22Name];
                break;

            case DucTypes.ReferenceCollection:
                string col5Name = string.Format(UIConst.ValueIntKeyFormatString, DucHelper.GetClientId(ducValue.DucId));
                int    value5Int;
                if (int.TryParse(formData[col5Name], out value5Int))
                {
                    ducValue.ValueInt = value5Int;
                }
                break;

            default:
                break;
            }
        }