2024年5月28日 星期二

V20304H – [維護附檔]鈕 – [新增附檔] [刪除附檔] [瀏覽附檔] - 資料庫檔案.[上傳][下載][刪除] - 下載檔案

 目的: V20304H – [新增附檔] [刪除附檔] [瀏覽附檔]  - 資料庫檔案.[上傳][下載][刪除]

處理說明:  1>  [新增附檔]鈕 - 選擇檔案後上傳
                          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();

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 "
+ ") ";

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()


   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("瀏覽附檔((下載))成功!!");



沒有留言:

張貼留言