目的: V20304H – [新增附檔] [刪除附檔] [瀏覽附檔] - 資料庫檔案.[上傳][下載][刪除]
處理說明: 1> [新增附檔]鈕 - 選擇檔案後上傳
1>>*.js
1>>*.js
SelectFile(Ok_process);
2>>*.cs - 將 檔案上傳至 Request.Files[0], 並將檔案內容存入 byte[]
Stream file_Strm = Request.Files[cur_FName].InputStream;
//byte[] fileRcrd = new byte[fileSize];
BinaryReader br = new BinaryReader(file_Strm);
byte[] fileBody = br.ReadBytes((Int32)file_Strm.Length);
3>將檔案寫入資料庫
Tmp_Sql = " INSERT INTO AMM_AKFL "
+ " ( AMMNO,"
+ " ITM,FILENAME,FILESIZE,FILEDATE,FILEBODY )"
+ " VALUES "
+ "(" + myfunc.AA(Tmp_AMMNO) + ","
+ myfunc.AA(Tmp_NEXT_ITM) + ","
+ myfunc.AA(Tmp_FILENAME) + ","
+ myfunc.AA(Tmp_FILESIZE) + ","
+ myfunc.AA(Tmp_FILEDATE)
+ ", :FILEBODY "
+ ") ";
cmd.CommandText = Tmp_Sql;
cmd.Parameters.Add("FILEBODY", OracleDbType.Blob, fileBody.Length);
cmd.Parameters["FILEBODY"].Value = fileBody;
cmd.ExecuteNonQuery();
2>[刪除附檔]鈕 - 一般的 Del SQL 即可
Tmp_Sql = " DELETE AMM_AKFL "
+ " WHERE AMMNO=" + myfunc.AA(Tmp_AMMNO)
+ " AND ITM=" + myfunc.AA(Tmp_ITM);
cmd.CommandText = Tmp_Sql;
cmd.ExecuteNonQuery();
Tmp_Sql = " DELETE AMM_AKFL "
+ " WHERE AMMNO=" + myfunc.AA(Tmp_AMMNO)
+ " AND ITM=" + myfunc.AA(Tmp_ITM);
cmd.CommandText = Tmp_Sql;
cmd.ExecuteNonQuery();
3>[瀏覽檔案]鈕 : 利用VUTLAPI/dnloadFile_Cnd?
var Tmp_Flds = "FILENAME,FILEBODY"
var Tmp_Cnd = " AND AMMNO=" + AA(cur_rec.data["AMMNO"])
+ " AND ITM=" + AA(cur_rec.data["ITM"]);
var Tmp_url = "../api/VUTLAPI/dnloadFile_Cnd?aTbl=AMM_AKFL&Flds=" + Tmp_Flds + "&aCnd=" + Tmp_Cnd;document.location = Tmp_url;
1>*.js
var sub1_Btns = [
{
xtype: 'button', text: '新增附檔', id: 'sub1_AddBtn',
listeners: {
click: function () {
//mysuccessalert("新增附檔");
SelectFile(Ok_process);
}}},
2>*.cs
// sub1.[新增附檔] 鈕 , 新增一筆 AMM_AKFL資料 (上傳檔案)
[HttpPost]
public void uploadFile2AMM_AKFL()
{
HttpContext c = HttpContext.Current;
NameValueCollection nvc = c.Request.Form;
string FName = nvc["FName"];
string Tmp_AMMNO = nvc["AMMNO"];
HttpCookie MyCookie; //將訊息傳至前端
HttpRequest Request = HttpContext.Current.Request;
var response = this.Request.CreateResponse();
string file_Name = FName;
string FILEDT = DateTime.Now.ToString("yyyy/MM/dd");
string Tmp_RtnMsg = "";
string Tmp_Sql = "", Tmp_Str = "";
OracleConnection conn = new OracleConnection(DBService.ConnectionString(DBLINK));//
OracleCommand cmd = new OracleCommand();
OracleDataReader reader;
conn.Open();
cmd.Connection = conn;
foreach (string cur_FName in Request.Files)
{
string fileType = Request.Files[cur_FName].ContentType;
Stream file_Strm = Request.Files[cur_FName].InputStream;
file_Name = Path.GetFileName(Request.Files[cur_FName].FileName);
int fileSize = Request.Files[cur_FName].ContentLength;
//byte[] fileRcrd = new byte[fileSize];
BinaryReader br = new BinaryReader(file_Strm);
byte[] fileBody = br.ReadBytes((Int32)file_Strm.Length);
string Tmp_FILENAME = file_Name;
string Tmp_NEXT_ITM = get_NEXT_ITM(Tmp_AMMNO);
string Tmp_FILEDATE = FILEDT; // 當天
string Tmp_FILESIZE = fileSize.ToString();
//更新資料庫欄位值
try
{
Tmp_Sql = " INSERT INTO AMM_AKFL "
+ " ( AMMNO,"
+ " ITM,FILENAME,FILESIZE,FILEDATE,FILEBODY )"
+ " VALUES "
+ "(" + myfunc.AA(Tmp_AMMNO) + ","
+ myfunc.AA(Tmp_NEXT_ITM) + "," + myfunc.AA(Tmp_FILENAME) + "," + myfunc.AA(Tmp_FILESIZE) + "," + myfunc.AA(Tmp_FILEDATE) + ", :FILEBODY "
+ ") ";
//[選擇檔案]子畫面. [確認匯入]鈕 , 處理
function Ok_process_V20304H(me, e, eOpts) {
//取得 [檔案上傳].檔名
var Tmp_FileObj = Ext.getCmp('FName');
console.log("FName Obj:", Tmp_FileObj);
var Tmp_Str = "";
var np = {}
np["FName"] = Ext.getDom(Tmp_FileObj.inputId).value;
np["AMMNO"] = Ext.getCmp("sub_AMMNO").getValue();
console.log("FName: ", np.FName);
//submit會將fileUploadForm裡面input name送到後端
//Ext.getCmp('btn_FileIn').getForm().submit({
me.up("form").submit({
//standardSubmit: false, //default:false
url: '../api/V20304HAPI/uploadFile2AMM_AKFL',
method: 'POST',
headers: { 'Content-type': 'multipart/form-data' },
params: np,
});
//顯示結果訊息..
var mask = new Ext.LoadMask(Ext.getBody(), {
msg: '處理中,請稍待...'
});
mask.show();//使用 mask 需手動呼叫show() 方法下
//若要傳送檔案到前端, 必需用 Cookie 判斷後端是否已完成
//每1秒檢核一次,是否已完成, 若已完成,則不再檢核
var timer = setInterval(function () {
var r = r_cookies('EX_DFile');
//console.log("r_cookies=", r);
if (!checkisnull(r)) {
mysuccessalert(r);
clearInterval(timer);
mask.hide();
timer = null;
//將[選擇檔案子視窗]關閉
Ext.getCmp("SelectForm_cancelbtn").fireHandler();
//將[sub1_Grid]重新取資料
Ext.getCmp('sub1_Grid').reloadGridData();
//this.up("window").close();
//this.up("window").destroy();
}
}, 1000); //1000ms = 1sec
}; // end of Ok_process() { //批次新增
function Ok_process_V20304H(me, e, eOpts) {
//取得 [檔案上傳].檔名
var Tmp_FileObj = Ext.getCmp('FName');
console.log("FName Obj:", Tmp_FileObj);
var Tmp_Str = "";
var np = {}
np["FName"] = Ext.getDom(Tmp_FileObj.inputId).value;
np["AMMNO"] = Ext.getCmp("sub_AMMNO").getValue();
console.log("FName: ", np.FName);
//submit會將fileUploadForm裡面input name送到後端
//Ext.getCmp('btn_FileIn').getForm().submit({
me.up("form").submit({
//standardSubmit: false, //default:false
url: '../api/V20304HAPI/uploadFile2AMM_AKFL',
method: 'POST',
headers: { 'Content-type': 'multipart/form-data' },
params: np,
});
//顯示結果訊息..
var mask = new Ext.LoadMask(Ext.getBody(), {
msg: '處理中,請稍待...'
});
mask.show();//使用 mask 需手動呼叫show() 方法下
//若要傳送檔案到前端, 必需用 Cookie 判斷後端是否已完成
//每1秒檢核一次,是否已完成, 若已完成,則不再檢核
var timer = setInterval(function () {
var r = r_cookies('EX_DFile');
//console.log("r_cookies=", r);
if (!checkisnull(r)) {
mysuccessalert(r);
clearInterval(timer);
mask.hide();
timer = null;
//將[選擇檔案子視窗]關閉
Ext.getCmp("SelectForm_cancelbtn").fireHandler();
//將[sub1_Grid]重新取資料
Ext.getCmp('sub1_Grid').reloadGridData();
//this.up("window").close();
//this.up("window").destroy();
}
}, 1000); //1000ms = 1sec
}; // end of Ok_process() { //批次新增
2>*.cs
// sub1.[新增附檔] 鈕 , 新增一筆 AMM_AKFL資料 (上傳檔案)
[HttpPost]
public void uploadFile2AMM_AKFL()
{
HttpContext c = HttpContext.Current;
NameValueCollection nvc = c.Request.Form;
string FName = nvc["FName"];
string Tmp_AMMNO = nvc["AMMNO"];
HttpCookie MyCookie; //將訊息傳至前端
HttpRequest Request = HttpContext.Current.Request;
var response = this.Request.CreateResponse();
string file_Name = FName;
string FILEDT = DateTime.Now.ToString("yyyy/MM/dd");
string Tmp_RtnMsg = "";
string Tmp_Sql = "", Tmp_Str = "";
OracleConnection conn = new OracleConnection(DBService.ConnectionString(DBLINK));//
OracleCommand cmd = new OracleCommand();
OracleDataReader reader;
conn.Open();
cmd.Connection = conn;
foreach (string cur_FName in Request.Files)
{
string fileType = Request.Files[cur_FName].ContentType;
Stream file_Strm = Request.Files[cur_FName].InputStream;
file_Name = Path.GetFileName(Request.Files[cur_FName].FileName);
int fileSize = Request.Files[cur_FName].ContentLength;
//byte[] fileRcrd = new byte[fileSize];
BinaryReader br = new BinaryReader(file_Strm);
byte[] fileBody = br.ReadBytes((Int32)file_Strm.Length);
string Tmp_FILENAME = file_Name;
string Tmp_NEXT_ITM = get_NEXT_ITM(Tmp_AMMNO);
string Tmp_FILEDATE = FILEDT; // 當天
string Tmp_FILESIZE = fileSize.ToString();
//更新資料庫欄位值
try
{
Tmp_Sql = " INSERT INTO AMM_AKFL "
+ " ( AMMNO,"
+ " ITM,FILENAME,FILESIZE,FILEDATE,FILEBODY )"
+ " VALUES "
+ "(" + myfunc.AA(Tmp_AMMNO) + ","
+ myfunc.AA(Tmp_NEXT_ITM) + "," + myfunc.AA(Tmp_FILENAME) + "," + myfunc.AA(Tmp_FILESIZE) + "," + myfunc.AA(Tmp_FILEDATE) + ", :FILEBODY "
+ ") ";
cmd.CommandText = Tmp_Sql;
cmd.Parameters.Add("FILEBODY", OracleDbType.Blob, fileBody.Length);
cmd.Parameters["FILEBODY"].Value = fileBody;
cmd.ExecuteNonQuery();
Tmp_RtnMsg = "[新增附檔]成功!!";
MyCookie = new HttpCookie("EX_DFile", HttpUtility.UrlEncode(Tmp_RtnMsg));
HttpContext.Current.Response.Cookies.Add(MyCookie);
HttpContext.Current.Response.End();
return;
}// try
catch (Exception e)
{ //失敗
Tmp_RtnMsg = "[新增附檔]失敗!!<br>"
+ e.Message + "<br>";
MyCookie = new HttpCookie("EX_DFile", HttpUtility.UrlEncode(Tmp_RtnMsg));
HttpContext.Current.Response.Cookies.Add(MyCookie);
HttpContext.Current.Response.End();
return;
}
finally
{
conn.Close();
}
} //end of foreach (string cur_FName in Request.Files)
return;
} // end of uploadFile2AMM_FMF()
cmd.Parameters.Add("FILEBODY", OracleDbType.Blob, fileBody.Length);
cmd.Parameters["FILEBODY"].Value = fileBody;
cmd.ExecuteNonQuery();
Tmp_RtnMsg = "[新增附檔]成功!!";
MyCookie = new HttpCookie("EX_DFile", HttpUtility.UrlEncode(Tmp_RtnMsg));
HttpContext.Current.Response.Cookies.Add(MyCookie);
HttpContext.Current.Response.End();
return;
}// try
catch (Exception e)
{ //失敗
Tmp_RtnMsg = "[新增附檔]失敗!!<br>"
+ e.Message + "<br>";
MyCookie = new HttpCookie("EX_DFile", HttpUtility.UrlEncode(Tmp_RtnMsg));
HttpContext.Current.Response.Cookies.Add(MyCookie);
HttpContext.Current.Response.End();
return;
}
finally
{
conn.Close();
}
} //end of foreach (string cur_FName in Request.Files)
return;
} // end of uploadFile2AMM_FMF()
cur_rec = cur_recs[0];
console.log("cur_rec:", cur_rec);
console.log("Tmp_sub1_Grid.store:", Tmp_sub1_Grid.store);
var Tmp_Flds = "FILENAME,FILEBODY"
var Tmp_Cnd = " AND AMMNO=" + AA(cur_rec.data["AMMNO"])
+ " AND ITM=" + AA(cur_rec.data["ITM"]);
var Tmp_url = "../api/VUTLAPI/dnloadFile_Cnd?aTbl=AMM_AKFL&Flds=" + Tmp_Flds + "&aCnd=" + Tmp_Cnd;
//document.location = "../api/VUTLAPI/dnloadSS_File?FNAME=V20304H_匯入格式.xlsx ";
document.location = Tmp_url;
mysuccessalert("瀏覽附檔((下載))成功!!");