public void securityfun(string file_parentid, string file_comorsec) { StringBuilder sb = new StringBuilder(); SqlConnection oConn = new SqlConnection(pathUrl("DSN")); SqlCommand oCmd = new SqlCommand(); oCmd.Connection = oConn; sb.Append(@"SELECT * FROM sfts_file WHERE file_parentid = @file_parentid AND file_comorsec= @file_comorsec "); oCmd.CommandText = sb.ToString(); oCmd.Parameters.AddWithValue("@file_parentid", file_parentid); oCmd.Parameters.AddWithValue("@file_comorsec", file_comorsec); SqlDataAdapter oda = new SqlDataAdapter(oCmd); DataTable dt = new DataTable(); oda.Fill(dt); string pasw = GenAESCodePass(file_parentid);//解壓縮密碼 int fileTotalSize = 0; using (Stream zipFileStream = new FileStream(pathUrl("Zippath") + dt.Rows[0]["file_encryptfileName"].ToString() + ".zip", FileMode.Create, FileAccess.Write)) { ZipWriter zipWriter = new ZipWriter(zipFileStream); for (int i = 0; i < dt.Rows.Count; i++) { //把sfts_file的狀態更新(0.5處理中) Update_sfts_fileOnGoing(dt.Rows[i]["file_id"].ToString(), "0.5"); ZipItemLocalHeader localHeader; //密件 localHeader = new ZipItemLocalHeader( dt.Rows[i]["file_origiFileName"].ToString() + dt.Rows[i]["file_exten"].ToString(), CompressionMethod.Deflated64, CompressionLevel.Highest, EncryptionMethod.WinZipAes, pasw); zipWriter.WriteItemLocalHeader(localHeader); using (Stream sourceStream = new FileStream(pathUrl("path") + dt.Rows[i]["file_encryptfileName"].ToString() + dt.Rows[i]["file_exten"].ToString(), FileMode.Open, FileAccess.Read)) { zipWriter.WriteItemData(sourceStream); } fileTotalSize += Convert.ToInt32(dt.Rows[i]["file_size"].ToString()); } zipWriter.CloseZipFile(); zipWriter.Dispose(); } //把sft_afile新增 INSERT_sfts_afile(dt.Rows[0]["file_parentid"].ToString(), dt.Rows[0]["file_comorsec"].ToString(), pasw, "", dt.Rows[0]["file_encryptfileName"].ToString(), fileTotalSize, dt.Rows[0]["file_stat"].ToString(), ".zip"); //把sfts_file的狀態更新 Update_sfts_file(file_parentid, file_comorsec, "1"); oda.Dispose(); oConn.Close(); oConn.Dispose(); oCmd.Dispose(); }
public void commonORnonforwardfun(string file_parentid, string file_comorsec) { StringBuilder sb = new StringBuilder(); SqlConnection oConn = new SqlConnection(pathUrl("DSN")); SqlCommand oCmd = new SqlCommand(); oCmd.Connection = oConn; sb.Append(@"SELECT * FROM sfts_file WHERE file_parentid = @file_parentid AND file_comorsec= @file_comorsec "); oCmd.CommandText = sb.ToString(); oCmd.Parameters.AddWithValue("@file_parentid", file_parentid); oCmd.Parameters.AddWithValue("@file_comorsec", file_comorsec); SqlDataAdapter oda = new SqlDataAdapter(oCmd); DataTable dt = new DataTable(); oda.Fill(dt); Random ram = new Random(); int numb = ram.Next(9999); string zipNmae = DateTime.Now.ToString("yyyyMMddHHmmss") + numb.ToString(); //一般檔案 還需要壓縮成一個檔案 裡面放所有的檔案 但是不需要解壓縮密碼 using (Stream zipFileStream = new FileStream(pathUrl("Zippath") + zipNmae + ".zip", FileMode.Create, FileAccess.Write)) { int fileSize = 0; ZipWriter zipWriter = new ZipWriter(zipFileStream); for (int i = 0; i < dt.Rows.Count; i++) { //把sfts_file的狀態更新(0.5處理中) Update_sfts_fileOnGoing(dt.Rows[i]["file_id"].ToString(), "0.5"); ZipItemLocalHeader localHeader; //一般 localHeader = new ZipItemLocalHeader( dt.Rows[i]["file_origiFileName"].ToString() + dt.Rows[i]["file_exten"].ToString(), CompressionMethod.Deflated64, CompressionLevel.Highest ); zipWriter.WriteItemLocalHeader(localHeader); using (Stream sourceStream = new FileStream(pathUrl("path") + dt.Rows[i]["file_encryptfileName"].ToString() + dt.Rows[i]["file_exten"].ToString(), FileMode.Open, FileAccess.Read)) { zipWriter.WriteItemData(sourceStream); } fileSize += Convert.ToInt32(dt.Rows[i]["file_size"].ToString()); } zipWriter.CloseZipFile(); zipWriter.Dispose(); //把所有壓成一包的壓縮檔資料塞一筆到afile內 差別只在於此筆資料 file_origiFileName="" and afile_encrypt="N"(方便在撈的時候餵給GridView不要被撈到) INSERT_sfts_afile(dt.Rows[0]["file_parentid"].ToString(), dt.Rows[0]["file_comorsec"].ToString(), "N", "", zipNmae, fileSize, dt.Rows[0]["file_stat"].ToString(), ".zip"); } for (int i = 0; i < dt.Rows.Count; i++) { //不管怎樣 還是把所有資料二話不說複製一份到sfts_afile裡面 方便處裡 INSERT_sfts_afile(dt.Rows[i]["file_parentid"].ToString(), dt.Rows[i]["file_comorsec"].ToString(), dt.Rows[i]["file_encrypt"].ToString(), dt.Rows[i]["file_origiFileName"].ToString(), dt.Rows[i]["file_encryptfileName"].ToString(), Convert.ToInt32(dt.Rows[i]["file_size"].ToString()), dt.Rows[i]["file_stat"].ToString(), dt.Rows[i]["file_exten"].ToString()); } //把sfts_file的狀態更新 Update_sfts_file(file_parentid, file_comorsec, "1"); oda.Dispose(); oConn.Close(); oConn.Dispose(); oCmd.Dispose(); }