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); }
/// <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)); }