You are on page 1of 7

Angular

- file .ts button upload


//#region button select image
onUpload(event, code: String) {
const files = event.target.files;
const file = files[0];

if (this.CheckFileSize(files[0].size, this.model.value)) {
this.swalPopUpMsg('V;File size must be less or equal to ' + this.model.value + ' MB');
$('#datatablesssss').DataTable().ajax.reload(); //ganti dengan nama datatable jika ini
di list
} else {
if (event.target.files && event.target.files[0]) {
const reader = new FileReader();

reader.readAsDataURL(event.target.files[0]); // read file as data url

// tslint:disable-next-line:no-shadowed-variable
reader.onload = (event) => {
reader.onload = this.handleFile.bind(this);
reader.readAsBinaryString(file);
}
}
this.tempFile = files[0].name;
this.tampDocumentCode = code;
}
}
//#endregion button select image

//#region convert to base64


handleFile(event) {
this.showSpinner = true;
const binaryString = event.target.result;
this.base64textString = btoa(binaryString);

this.tamps.push({
p_header: 'PUBLIC_SERVICE_DOCUMENT', //ganti dengan nama menu
p_module:'IFINPBS', //ganti dengan nama module
p_child: this.param,
p_id: this.tampDocumentCode,
p_file_path: this.tampDocumentCode,
p_file_name: this.tempFile,
p_base64: this.base64textString
});

this.dalservice.UploadFile(this.tamps, this.APIController, this.APIRouteForUploadFile)


.subscribe(
// tslint:disable-next-line:no-shadowed-variable
res => {
this.tamps = new Array();
// tslint:disable-next-line:no-shadowed-variable
const parses = JSON.parse(res);
if (parses.result === 1) {
this.showSpinner = false;
} else {
this.showSpinner = false;
this.swalPopUpMsg(parses.message);
}
$('#datatablesssss').DataTable().ajax.reload();
},
error => {
this.showSpinner = false;
this.tamps = new Array();
// tslint:disable-next-line:no-shadowed-variable
const parses = JSON.parse(error);
this.swalPopUpMsg(parses.message);
$('#datatablesssss').DataTable().ajax.reload();
});
}
//#endregion convert to base64

- base.component.ts
//#region CheckFileSize
CheckFileSize(fileSize: any, maxFileSize: any) {
if (fileSize / 1024 / 1024 > maxFileSize) {
return true;
} else {
return false;
}
}
//#endregion

Dalservice.ts
PriviewFile(data: any, controller: String, route: String):
Observable<any> {
const result = JSON.stringify(data);
const url = `${this._urlAddress + controller + '/' + route}`;
return this._http.post<any[]>(url, result, this.httpOptions).pipe(
tap(_ => console.log(`priview image=${data[0].p_file_name}`)),
catchError(this.handleError)
);
}

API
- appsettings.json
"DocumentSetting": {
"docPrintSetting": "0" //document bisa di print dalam bentuk fisik maupun langsung ke database dalam bentuk blob (fisik: 0, blob:1)
},

"UrlApiCall": {
"docPathIfinsys": "",
"docPathIfinOpl": "\\Files",
"ifindocUploadUrl": "http://localhost:34232/api/DocumentMain/Uploadfile",
"ifindocDeleteUrl": "http://localhost:34232/api/DocumentMain/Deletefile"
},

- IfinancingController
Declare secretKey :

private String secretKey = "PT Inovasi Mitra Sejati";


protected string _docPrintSetting;

_docPrintSetting = configuration.GetValue<string>("DocumentSetting:docPrintSetting");

TamabahFunction PostUploadImage :
protected async Task<object> PostUploadImage([FromBody] dynamic data, string SpName, IHttpClientFactory _httpClientFactory)
{
string Username = decodeHeader(Request.Headers["UserID"]);//Request.Headers["UserID"]; // get id user
string IPAddress = Request.Headers["IPAddress"]; // decodeHeader(Request.Headers["IPAddress"]); // get IPAddress
GeneralDAL _dal = null;
Hashtable _htParameters = null;
string filePath = String.Empty;
string filePathCode = String.Empty;
string fileName = String.Empty;
string uploadResult = String.Empty;
string uploadFailedMessage = String.Empty;
object result = null;
var res = (string)null;

try
{
_dal = new GeneralDAL(_connectionString);
_htParameters = new Hashtable();

string tokenHeader = Request.Headers["Authorization"]; // get token from header


string usernameHeader = Request.Headers["UserID"]; // get userid from header
string ipaddressHeader = Request.Headers["IPAddress"]; // get ipaddress from header

#region untuk by pass certificate


//var spHandler = new HttpClientHandler()
//{
// ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) =>
// {
// return true;
// }
//};
#endregion untuk by pass certificate

var request = new HttpRequestMessage(HttpMethod.Post, new Uri(_ifindocUploadUrl));


request.Headers.Add("Accept", "application/json");
request.Headers.Add("Authorization", tokenHeader);
request.Headers.Add("UserID", usernameHeader);
request.Headers.Add("IPAddress", ipaddressHeader);

var Jsondata = JsonConvert.SerializeObject(data);


request.Content = new StringContent(Jsondata, Encoding.UTF8, "application/json");

#region untuk by pass certificate


//var client = new HttpClient(spHandler);
#endregion untuk by pass certificate

var client = _httpClientFactory.CreateClient();

var response = await client.SendAsync(request);

if (response.IsSuccessStatusCode)
{
res = await response.Content.ReadAsStringAsync();
responseSuccessResult.StatusCode = response.StatusCode;
responseSuccessResult.Data = JsonConvert.DeserializeObject<object>(res);

uploadResult = JObject.Parse(JObject.Parse(res).GetValue("value").ToString()).GetValue("result").ToString();
fileName = JObject.Parse(JObject.Parse(res).GetValue("value").ToString()).GetValue("filename").ToString();
filePath = JObject.Parse(JObject.Parse(res).GetValue("value").ToString()).GetValue("filepath").ToString();
uploadFailedMessage = JObject.Parse(JObject.Parse(res).GetValue("value").ToString()).GetValue("data").ToString();

if (uploadResult.Equals("1"))
{
//membuat folder
var datetime = DateTime.Now.ToString("yyyyMMddHHmmssfff");
dynamic parse = JArray.Parse(data.ToString());

for (int i = 0; i < parse.Count; i++)


{
var convert = JsonConvert.SerializeObject(parse[i]);

string[] stringArray = new string[] { convert };


var jsonConvert = JsonConvert.SerializeObject(stringArray);

_htParameters["p_file_path"] = "";
_htParameters["p_file_name"] = "";

_htParameters = JsonController.setJsonToParam(jsonConvert);

// ini untuk dynamic spname


SpNames = SpName;

//mengambil data dari parameter yang dikirim

_htParameters["p_file_paths"] = (filePath ?? "");


_htParameters["p_file_name"] = (fileName ?? "");

Utility.ApplyDefaultProp(_htParameters, Username, GetIp());

_dal.Update("", SpNames, _htParameters);


}
responseSuccessResult.Data = _dal;
result = responseSuccessResult;
}
else
{
responseFailedResult.StatusCode = response.StatusCode;
responseFailedResult.Message = uploadFailedMessage;
result = responseFailedResult;
}
}
else
{
responseFailedResult.StatusCode = response.StatusCode;
responseFailedResult.Message = response.ReasonPhrase.ToString();
result = responseFailedResult;
}
}
catch (IOException ex)
{
responseFailedResult.Data = ex.InnerException.Message.ToString();
result = responseFailedResult;
}
return result;
}

protected object Priview([FromBody] dynamic data, string SpName)


{
string Username = decodeHeader(Request.Headers["UserID"]);//Request.Headers["UserID"]; // get id user
string IPAddress = Request.Headers["IPAddress"]; // get IPAddress
GeneralDAL _dal = null;
Hashtable _htParameters = null;
DataTable _dt = null;
string uploadPath = _hostingEnvironment.ContentRootPath + _docPathIfinOpl;
string file_name = "";
string file_path = "";

try
{
_dal = new GeneralDAL(_connectionString);
_htParameters = new Hashtable();

dynamic parse = JArray.Parse(data.ToString());


var convert = JsonConvert.SerializeObject(parse[0]);
string[] stringArray = new string[] { convert };

var jsonconvert = JsonConvert.SerializeObject(stringArray);


_htParameters = JsonController.setJsonToParam(jsonconvert);

Utility.ApplyDefaultProp(_htParameters, Username, IPAddress);

file_name = _htParameters["p_file_name"].ToString();
file_path = _htParameters["p_file_paths"].ToString();

if (_docPrintSetting.Equals("0"))// untuk fisik


{
int start = uploadPath.Length + 1;
string subStrFilePath = file_path.Substring(start);
var filePath = subStrFilePath.Split("\\");

_htParameters["p_module"] = filePath[0];
_htParameters["p_header"] = filePath[1];
_htParameters["p_child"] = filePath[2];
_htParameters["p_acess_type"] = "PREVIEW";

Match match = Regex.Match(file_path + Path.GetExtension(file_name), RegexFilePathVal,


RegexOptions.IgnoreCase);
if (!match.Success)
{
Match matchExt = Regex.Match(file_path + Path.GetExtension(file_name), RegexFileExtension,
RegexOptions.IgnoreCase);
if (matchExt.Success)
{

string source = file_path;


string target = _hostingEnvironment.ContentRootPath + _docPathIfinOpl + "\\TEMP\\EXTRACT\\";
string searchFile = file_name;

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
using (Ionic.Zip.ZipFile zip = Ionic.Zip.ZipFile.Read(source))
{
bool results = zip.ContainsEntry(searchFile);
if (results)
{
zip.Password = secretKey;
zip.ExtractAll(target, Ionic.Zip.ExtractExistingFileAction.OverwriteSilently);
}
}
byte[] b = System.IO.File.ReadAllBytes(target + file_name);
var base64 = Convert.ToBase64String(b);

if (System.IO.File.Exists(target + file_name))
{
System.IO.File.Delete(target + file_name);
//_dal.Insert("", "XSP_SYS_DOC_ACCESS_LOG_INSERT", _htParameters);
}

return Ok(new { data = base64, filename = file_name });


}
else
{
return Ok(new { result = 0, data = "E;warning;File Extension Not Valid" });
}
}
else
{
return Ok(new { result = 0, data = "E;warning;Path Not Valid" });
}
}
else
{
//int start = file_path.Length + 1;
//string subStrFilePath = file_path.Substring(start);
var filePath = file_path.Split("\\");

_htParameters["p_module"] = filePath[0];
_htParameters["p_header"] = filePath[1];
_htParameters["p_child"] = filePath[2];
_htParameters["p_doc_no"] = filePath[2];
_htParameters["p_acess_type"] = "PREVIEW";

_dt = _dal.GetRow("", SpName, _htParameters);

var base64 = Encoding.UTF8.GetString(Convert.FromBase64String(_dt.Rows[0].ItemArray[5].ToString()));

_dal.Insert("", "XSP_SYS_DOC_ACCESS_LOG_INSERT", _htParameters);

return Ok(new { data = base64, filename = file_name });


}
}
catch (IOException e)
{
return Ok(new { result = 0, data = e.InnerException.Message });
}
}

- file controller yang ada function uploadnya

[HttpPost]
[Route("Upload")]
public async Task<IActionResult> PostUploadImage([FromBody] dynamic data)
{
return await Task.Run(() =>
{
return Ok(base.PostUploadImage((JArray)data, _spNameForUploadFile));
});
}

[HttpPost]
[Route("Priview")]
public async Task<IActionResult> Priview([FromBody] dynamic data)
{
return await Task.Run(() =>
{
return Ok(base.Priview((JArray)data, _spName));
});
}

[HttpPost]
[Route("Deletefile")]
public async Task<IActionResult> Deletefile([FromBody] dynamic data)
{
return await Task.Run(() =>
{
return Ok(base.Deletefile((JArray)data, _spNameForDeleteFile));
});
}

- jika error maka coba samakan depedencis nya

You might also like