Пример #1
0
        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();
        }
Пример #2
0
        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();
        }