Example #1
0
        public async Task <JsonResult> CreateCsv()
        {
            try
            {
                var message = string.Empty;
                var pattern = WebConfigurationManager.AppSettings[Const.Pattern];
                int.TryParse(WebConfigurationManager.AppSettings[Const.MinContentLength], out int minContentLength);
                int.TryParse(WebConfigurationManager.AppSettings[Const.MaxContentLength], out int maxContentLength);
                int.TryParse(WebConfigurationManager.AppSettings[Const.TotalRows], out int totalRows);

                //Check require fields before going to another step:
                if (minContentLength <= 0 || maxContentLength <= 0 || totalRows <= 0 ||
                    string.IsNullOrEmpty(_folderUrl) || string.IsNullOrEmpty(_fileName) ||
                    string.IsNullOrEmpty(_delimiter) || string.IsNullOrEmpty(pattern))
                {
                    return(await Task.FromResult(Json(new
                    {
                        status = false,
                        message = Const.MissingRequiredInfo
                    }, JsonRequestBehavior.AllowGet)));
                }

                var model = new FileParameterModel
                {
                    FolderUrl        = _folderUrl,
                    FileName         = _fileName,
                    Delimiter        = _delimiter,
                    MaxContentLength = maxContentLength,
                    MinContentLength = minContentLength,
                    Pattern          = pattern,
                    TotalRows        = totalRows
                };
                var result = await _fileService.CreateCsvFile(model);

                if (result)
                {
                    message = Const.CreateFileSuccessfully;
                }
                else
                {
                    message = Const.CreateFileUnSuccessfully;
                }

                return(await Task.FromResult(Json(new
                {
                    status = result,
                    message = message
                }, JsonRequestBehavior.AllowGet)));
            }
            catch (Exception ex)
            {
                if (ex.GetType().FullName == Const.IOException)
                {
                    Response.StatusCode = 423;
                }
                return(Json(new { error = ex.Message }, JsonRequestBehavior.AllowGet));
            }
        }
        private async Task <byte[]> GetMultipartFormData(Dictionary <string, object> postParameters, string boundary)
        {
            Stream formDataStream = new MemoryStream();
            bool   needsCLRF      = false;

            foreach (var param in postParameters)
            {
                if (needsCLRF)
                {
                    await formDataStream.WriteAsync(encoding.GetBytes("\r\n"), 0, encoding.GetByteCount("\r\n"));
                }

                needsCLRF = true;

                if (param.Value is FileParameterModel)
                {
                    FileParameterModel fileToUpload = (FileParameterModel)param.Value;

                    string header = string.Format("--{0}\r\nContent-Disposition: form-data; name=\"{1}\"; filename=\"{2}\"\r\nContent-Type: {3}\r\n\r\n",
                                                  boundary,
                                                  param.Key,
                                                  fileToUpload.FileName ?? param.Key,
                                                  fileToUpload.ContentType ?? "application/octet-stream");

                    await formDataStream.WriteAsync(encoding.GetBytes(header), 0, encoding.GetByteCount(header));

                    await formDataStream.WriteAsync(fileToUpload.File, 0, fileToUpload.File.Length);
                }
                else
                {
                    string postData = string.Format("--{0}\r\nContent-Disposition: form-data; name=\"{1}\"\r\n\r\n{2}",
                                                    boundary,
                                                    param.Key,
                                                    param.Value);
                    await formDataStream.WriteAsync(encoding.GetBytes(postData), 0, encoding.GetByteCount(postData));
                }
            }

            string footer = "\r\n--" + boundary + "--\r\n";
            await formDataStream.WriteAsync(encoding.GetBytes(footer), 0, encoding.GetByteCount(footer));

            formDataStream.Position = 0;
            byte[] formData = new byte[formDataStream.Length];
            await formDataStream.ReadAsync(formData, 0, formData.Length);

            formDataStream.Close();

            return(formData);
        }
Example #3
0
        /// <summary>
        /// This method will help to create the Csv file
        /// </summary>
        /// <param name="fileParameter"></param>
        /// <returns></returns>
        public async Task <bool> CreateCsvFile(FileParameterModel fileParameter)
        {
            //Check and create Directory If It Not Exist
            var filePath = await Task.Run(() => $"{FileHelper.CreateDirectory(fileParameter.FolderUrl)}//{fileParameter.FileName}");

            using (var writer = new CsvFileWriter(filePath))
            {
                //Config to get 100000 from App Setting
                for (int i = 0; i < fileParameter.TotalRows; i++)
                {
                    var row = new CsvRowModel
                    {
                        $"{ Guid.NewGuid()}{fileParameter.Delimiter}{RandomString(fileParameter.MinContentLength , fileParameter.MaxContentLength, fileParameter.Pattern)}"
                    };

                    await Task.Run(() => writer.WriteRow(row));
                }
            }

            return(await Task.FromResult(true));
        }