目的: V20301 - [新增附檔][刪除附檔][瀏覽附檔]
處理說明: 如何新增附檔至資料庫
1>選擇檔案
1>選擇檔案
2>後端讀取選擇的檔案
3>將檔案存入資料庫
1>> [新增按鈕]
//新增按鈕 : [附檔資料] [批次新增][確認轉發工][下載匯入格式]
var BtnAry = [
{
xtype: 'button', text: '附檔資料', id: 'AttachBtn',
listeners: {
click: function () {
var cur_recs = Ext.getCmp("grid_Single").getSelectionModel().getSelection();
if (cur_recs.length == 0) {
var Tmp_Str = "請先選擇系統件資料";
mywarnalert(Tmp_Str);
return;
}
else {
var cur_rec = cur_recs[0];
var Tmp_FMNO = cur_rec.data["FMNO"];
AttachBtn_click(Tmp_FMNO);
}
}
}
},
{
xtype: 'button', text: '批次新增', id: 'BatchAddBtn',
listeners: {
click: function (me,e,eOpts) {
console.log(" 1 批次新增: ");
//xlsInBtn_click();
//挑選檔案,傳入 CallBack函式(按OK時的處理函式)
console.log(" 2 before SelFile ");
SelectFile(Ok_process); //於 SelectFile 時 , assign Ok_process 的參數
console.log(" 3 after SelectFile: ");
}
}
},
{
xtype: 'button', text: '確認轉發工', id: 'ConfirmBtn',
listeners: {
click: function () {
//console.log(" 1 inside 確認轉發工: ");
FM2AMM();
}
}
},
{
xtype: 'button', text: '下載匯入格式', id: 'DownFmtBtn',
listeners: {
click: function () {
console.log(" 1 inside 下載匯入格式: ");
document.location = "../api/VUTLAPI/dnloadSS_File?FNAME=V20301_匯入格式.xlsx ";
}
}
},
];
//於單檔下方新增 Button
Ext.getCmp('grid_Single').insertBtn(BtnAry);
2>> [新增附檔]鈕
var sub1_Btns = [
{
xtype: 'button', text: '新增附檔', id: 'sub1_AddBtn',
listeners: {
click: function () {
//mysuccessalert("新增附檔");
SelectFile(sub1_Add_process);
}
}
},
//[新增附檔]鈕 , 處理
function sub1_Add_process(me, e, eOpts) {
console.log(" inside Ok_process");
console.log(" me: ", me);
//取得 [檔案上傳].檔名
var Tmp_FileObj = Ext.getCmp('FName');
console.log("FName Obj:", Tmp_FileObj);
//me = Ext.getCmp("SelectForm"); //取得 [選擇畫面]
var Tmp_Str = "";
var np = {
FName: Ext.getDom(Tmp_FileObj.inputId).value,
FMNO: Ext.getCmp("sub1_FMNO").getValue(),
};
console.log("FName: ", np.FName);
console.log("FMNO: ", np.FMNO);
//submit會將fileUploadForm裡面input name送到後端
//Ext.getCmp('btn_FileIn').getForm().submit({
//me.up("form").submit({
me.up("form").submit({
//standardSubmit: false, //default:false
url: '../api/V20301API/uploadFile2AMM_FMF',
method: 'POST',
headers: { 'Content-type': 'multipart/form-data' },
params: np,
success: function (response, opts) {
console.log("success opts.response.responseText:", opts.response.responseText);
var obj = Ext.decode(opts.response.responseText);
console.log("obj:", obj);
if (obj["success"]) {
Tmp_Str = "[新增附檔]完成 !! <br>"
+ obj['Rtn_Msg'];
mysuccessalert(Tmp_Str);
console.log("success=true , Tmp_Str=", Tmp_Str);
me.up("window").close();
me.up("window").destroy();
//Ext.getCmp('sub1_Grid').reloadGridData();
Ext.getCmp('sub1_Grid').store.reload();
}
else {
Tmp_Str = "[新增附檔]失敗 !! <br>"
+ obj['Rtn_Msg'];
mywarnalert(Tmp_Str);
//Tmp_Sql = " Tmp_sql :<br> "
// +obj['Tmp_Sql'];
//mywarnalert(Tmp_Str);
console.log("success=false , Tmp_Str=", Tmp_Str);
me.up("window").close();
me.up("window").destroy();
};
},
failure: function (response, opts) {
console.log(" failure opts.response.responseText:", opts.response.responseText);
var obj = Ext.decode(opts.response.responseText);
console.log("obj:", obj);
Tmp_Str = "[新增附檔]失敗!! <br>"
+ "(" + obj['FName'] + ") <br>"
+ obj['Rtn_Msg'];
mywarnalert(Tmp_Str);
me.up("window").close();
me.up("window").destroy();
}
});
}; // end of sub1_Add_process() { //[新增附檔]
2>>[瀏覽附檔]鈕
{
xtype: 'button', text: '瀏覽附檔', id: 'sub1_ShowBtn',
listeners: {
click: function () {
//mysuccessalert("瀏覽附檔");
//sub1_Show_process();
var Tmp_sub1_Grid = Ext.getCmp('sub1_Grid');
console.log("Tmp_sub1_Grid:", Tmp_sub1_Grid);
var cur_recs;
var cur_rec;
cur_recs = Tmp_sub1_Grid.selModel.getSelection();
if (cur_recs.length == 0) {
mywarnalert("請先選擇要瀏覽的資料");
return;
}
else {
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 = " FMNO=" + AA(cur_rec.data["FMNO"])
+ " AND ITM=" + AA(cur_rec.data["ITM"]);
var Tmp_url = "../api/VUTLAPI/dnloadFile_Cnd?aTbl=AMM_FMF&Flds="+Tmp_Flds+"&aCnd="+Tmp_Cnd; //document.location = "../api/VUTLAPI/dnloadSS_File?FNAME=V20301_匯入格式.xlsx "; document.location = Tmp_url;
mysuccessalert("瀏覽附檔((下載))成功!!");
} // else .Length>0
} //end of click
} // end of listener
},
PS: myfunc.js
function SelectFile(par_OkProcess) {
console.log(" 2 inside SelectFile() ");
//var mySubForm = Ext.create('Ext.form.FormPanel', {
var SelectForm = Ext.create('Ext.form.FormPanel', {
autoScroll: true,
fieldDefaults: {
labelAlign: 'right',
},
layout: {
type: 'vbox',
align: 'stretch'
},
id: "SelectForm",
form_id: "SelectForm",
items: J_SelFile, //挑選檔案畫面欄位
buttons: [
{
text: "確定匯入", id: "SelectForm_okbtn", handler: function (me,e,eOpts) {
//mySubForm_2_btnokClick();
par_OkProcess(this,e,eOpts);
}
},
{
text: "取消", id: "SelectForm_cancelbtn", handler: function () {
var Tmp_win = this.up("window");
if (Tmp_win == undefined) {
Ext.Msg.alert("關閉時未取到Window Object");
}
this.up("window").close();
this.up("window").destroy();
}
}
]
}
);
var win = getEditWindow_my("匯入", SelectForm, 1);
win.width = 600;
win.height = 100;
win.show();
};
2>*.cs
// sub1.[新增附檔] 鈕 , 新增一筆 AMM_FMF資料 (上傳檔案)
[HttpPost]
public HttpResponseMessage uploadFile2AMM_FMF()
{
HttpContext c = HttpContext.Current;
NameValueCollection nvc = c.Request.Form;
string FName = nvc["FName"];
string Tmp_FMNO = nvc[ "FMNO"];
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_FMNO);
string Tmp_FILEDATE = FILEDT; // 當天
string Tmp_FILESIZE = fileSize.ToString();
//更新資料庫欄位值
try
{
Tmp_Sql = " INSERT INTO AMM_FMF "
+ " ( FMNO,"
+ " ITM,FILENAME,FILESIZE,FILEDATE,FILEBODY )"
+ " VALUES "
+ "(" + myfunc.AA(Tmp_FMNO) + ","
+ 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 = "[新增附檔]成功!!";
Tmp_Str = "{success: true,FName:" + myfunc.AA(FName) + ",Rtn_Msg:" + myfunc.AA(Tmp_RtnMsg) + "}";
response.Content = new StringContent(Tmp_Str); // 回應內容
return response;
}// try
catch (Exception e)
{ //失敗
Tmp_RtnMsg = "[新增附檔]失敗!!<br>"
+ e.Message + "<br>";
//+ Tmp_Sql ;
//Tmp_Str = "{success: false,FName:" + myfunc.AA(FName) + ",Rtn_Msg:" + myfunc.AA(Tmp_RtnMsg) +",Tmp_Sql:"+ myfunc.AA(Tmp_Sql) +"}";
Tmp_Str = "{success: false,FName:" + myfunc.AA(FName) + ",Rtn_Msg:" + myfunc.AA(Tmp_RtnMsg) + "}";
response.Content = new StringContent(Tmp_Str); // 回應內容
return response;
}
finally
{
conn.Close();
}
} //end of foreach (string cur_FName in Request.Files)
return response;
} // end of uploadFile2AMM_FMF()
沒有留言:
張貼留言