⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pmake.cs

📁 音像资料管理系统光盘制作控件源代码音像资料管理系统光盘制作控件源代码
💻 CS
📖 第 1 页 / 共 2 页
字号:
/*制作ISO并上传联合系统
 ***********************************
 * 系统需求:
 * 随书光盘管理中,录入时,批量或单个
 * 制作ISO文件并且上传到传过来的参数
 * 的FTP或UMC地址,并返回文件大小字节数。
 * *********************************
 *参数  
 * DestFilestore 目标文件夹
 * ResourceFileName 源文件名
 * Filesize 文件尺寸
 * OpterationModel 操作模式 操作模式 0- 单个 1 - 批量制作ISO上传 2-只批量制作ISO 3-只批量上传
 * ErrMessage 错误信息
 * CdRomNum 光盘符  比如C: F:
 * *********************************
 *程序员:杨航
 *日期:2008-05-05
 */
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;
using System.Runtime.InteropServices;


namespace IsoFtp
{
    /// <summary>
    ///  IsoFtp实现类
    /// </summary>
    [ComVisible(true)]
    [ClassInterface(ClassInterfaceType.AutoDispatch)]
    [ProgId("IsoFtp.FormMain")]
    public partial class PMake : Form, IFtpZipIso
    {
        #region 字段属性
        private string _DestFileStore="";
        private string _FileName="";
        private long _filesize=0;
        private int _Model=0;
        private string _ErrMsg="";
        private string _CdRomNum="";
        /// <summary>
        /// 目标文件夹
        /// </summary>
        public string DestFilestore 
        { 
            get 
            { 
                return _DestFileStore; 
            } 
            set 
            {
                if (!string.IsNullOrEmpty(value))
                {
                    this.txtFTPPath.Text = value;
                }
                _DestFileStore = value;
            } 
        }
        /// <summary>
        /// 文件名
        /// </summary>
        public string ResourceFileName 
        { 
            get { return _FileName; } 
            set 
            {
                if (!string.IsNullOrEmpty(value))
                {
                    saveFileDialog1.FileName=value;
                }
                _FileName = value;
            } 
        }
        /// <summary>
        /// 文件尺寸
        /// </summary>
        public string Filesize { get { return _filesize.ToString(); } set { _filesize = long.Parse(value); } }
        /// <summary>
        /// 操作模式 0- 单个 1 - 批量制作ISO上传 2-只批量制作ISO 3-只批量上传
        /// </summary>
        public int OpterationModel { 
            get 
            { 
                return _Model; 
            } 
            set 
            {
                if (value == 0)
                {
                    cbWithFtpUpLoad.Enabled = true;
                }
                if (value == 2)
                {
                    cbWithFtpUpLoad.Checked = false;
                }
                _Model = value; 
            } 
        }
        /// <summary>
        /// 光驱盘符
        /// </summary>
        public string CdRomNum { get { return _CdRomNum; } set { _CdRomNum = value; } }
        /// <summary>
        /// 错误信息
        /// </summary>
        public string ErrMessage { get { return _ErrMsg; } set { _ErrMsg = value; } }
        #endregion

        #region 事件声明
        //public delegate void OnConverCompletedEventHandler(object sender);
        
        public event EventHandler OnConvertCompleted;
       #endregion
        /// <summary>
        /// 大概实现一下
        /// </summary>
        public int ShowForm()
        {
            return 0;
        }
       /// <summary>
        /// 主窗体
        /// </summary>
        public PMake() 
        {          
            InitializeComponent();
            pg = this.toolStripProgressBar1;
            tb = txtLog;
            tssl = toolStripStatusLabel1;
        }
        /// <summary>
        /// 全部释放并退出
        /// </summary>
        public void AllClose()
        {
            Application.Exit();
        }
        bool canClose = true;
        private void button1_Click(object sender, EventArgs e)
        {
            if (listView1.SelectedItems.Count== 0)
            {
                MessageBox.Show("请选择一个光盘驱动器", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            DialogResult dr = saveFileDialog1.ShowDialog(this);
            if (dr == DialogResult.OK)
            {
                ResourceFileName = saveFileDialog1.FileName;
                string DrNum = listView1.SelectedItems[0].Text;
                CdRomNum = DrNum[1].ToString() + DrNum[2].ToString();
      
               // CdRomNum=(cdromListBox.SelectedItem as CDInfo).Name;
                StartRun();
            }
            listView1.SelectedItems.Clear();
        }
        /// <summary>
        /// 最下
        /// </summary>
        private void RefLog()
        {
            txtLog.SelectionStart = txtLog.Text.Length;
            txtLog.SelectionLength = 0;
            txtLog.ScrollToCaret();
        }
      static  string TestResult = "";
      static  long ExexcuteSeepStartTime = 0;
        /// <summary>
        /// 干活   
        /// </summary>
        public void StartRun()
        {
            if (onloadtrue == false)
            {
                return;
            }
            TestResult = "";
            ExexcuteSeepStartTime = 0;
            string isoFileName = saveFileDialog1.FileName.Substring(saveFileDialog1.FileName.LastIndexOf('\\') + 1);
            btISOSave.Enabled = false;
            btISOSave.Refresh();
            try
            {
                ISOCreater c = new ISOCreater();
                c.OnProgress += this.OnProgressEvent;
                string drn = CdRomNum;

                #region 制作ISO
              
                //OpterationModel操作模式 0- 担搁 1 - 批量制作ISO上传 2-批量制作ISO 3-批量上传
                if (OpterationModel != 3)
                {
                    if (c.CDROMReady(drn))
                    {
                        
                            ExexcuteSeepStartTime = DateTime.Now.Ticks;
                            txtLog.Text += "开始制作ISO镜像文件.." + "\r\n" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "\r\n";
                            toolStripStatusLabel1.Text = "制作ISO镜像";
                            RefLog();

                            canClose = false;
                            _filesize = c.Convert(drn, saveFileDialog1.FileName);

                            canClose = true;
                            TestResult = TimeSpan.FromTicks(DateTime.Now.Ticks - ExexcuteSeepStartTime).ToString();
                            toolStripProgressBar1.Value = 0;
                            txtLog.Text += "ISO镜像制作完毕!" + "\r\n" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "\r\n耗费时间:" + TestResult + "\r\n";
                            FileStream fs = new FileStream(saveFileDialog1.FileName, FileMode.Open, FileAccess.Read);
                            Filesize = fs.Length.ToString();
                            fs.Close();
                            RefLog();
                            if (OpterationModel == 2 || ((OpterationModel == 0) && (cbWithFtpUpLoad.Checked == false)))//为2时或0未加上传选项时
                            {                 
                                ISOCreater.WorkState = false;
                                btISOSave.Enabled = true;
                            }
                        
                    }
                    else
                    {
                        if (OpterationModel != 3)
                        {
                            MessageBox.Show("请插入一个光盘", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            return;
                        }

                    }
                }
                #endregion

                #region 上传文件
                String PathName = "";
                if (cbWithFtpUpLoad.Checked)//判断是否选中即可
                {
                    ExexcuteSeepStartTime = DateTime.Now.Ticks;
                    txtLog.Text += "开始上传文件.." + "\r\n" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "\r\n";
                    toolStripStatusLabel1.Text = "上传中";
                    RefLog();
                    //事件开始
                    if (txtFTPPath.Text[0].ToString() == @"\")//拷贝
                    {
                        StreamCopy scc = new StreamCopy();
                        scc.OnProgress += this.OnProgressEvent;
                        if (File.Exists(saveFileDialog1.FileName))
                        {
                            PathName = saveFileDialog1.FileName;

                        }
                        else
                        {
                            if (ISOCreater.WorkState==true)
                            {
                                MessageBox.Show("未找到文件,请重新选择!");
                            }
                            return;
                        }
                        string UncPath = this.txtFTPPath.Text;
                        if (UncPath[UncPath.Length - 1].ToString() != @"\")
                        {
                            UncPath += @"\";
                        }
                        string szi = scc.CopyFile(PathName, UncPath + isoFileName, 1024).ToString();
                        TestResult = TimeSpan.FromTicks(DateTime.Now.Ticks - ExexcuteSeepStartTime).ToString();
                        tb.Text += "文件上传完毕!" + "\r\n" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "\r\n耗费时间:" + TestResult + "\r\n";
                        ISOCreater.WorkState = false;
                        pg.Value = 0;
                        tssl.Text = "等待处理";

                    }
                    else//FTP上传
                    {
                        //FTPClient ftpC = new FTPClient();
                        //ftpC.OnProgress += this.OnProgressEvent;
                        if (File.Exists(saveFileDialog1.FileName))
                        {
                            PathName = saveFileDialog1.FileName;
                        }
                        else
                        {
                            if (ISOCreater.WorkState==true)
                            {
                                MessageBox.Show("未找到文件,请重新选择!");
                            }
                            return;
                        }
                        string path = PathName.Replace(PathName.Substring(PathName.LastIndexOf("\\")), "") + "\\";
                        string name = PathName.Substring(PathName.LastIndexOf("\\")).Replace("\\", "");
 
                        if (txtFTPPath.Text[txtFTPPath.Text.Length - 1].ToString() != @"/")
                        {
                            txtFTPPath.Text += @"/";
                        }
                        UploadFileInBackground2(txtFTPPath.Text + name, PathName);
                        RefLog();
                    }

                }
                #endregion

                if (OnConvertCompleted != null)
                {
                    OnConvertCompleted((object)Filesize, null);//结束事件
                }
            }
            catch(Exception exc)
            {
               // ErrMessage = exc.Message;
                MessageBox.Show(exc.Message);
                toolStripProgressBar1.Value = 0;
                toolStripStatusLabel1.Text = "等待处理";
                txtLog.Text += "操作失败";
                return;
            }            
        }
        #region Webclient的Fpt上传方式
        static WebClient client = new WebClient();
        public static void UploadFileInBackground2(string address, string fileName)
        {
            Uri uri = new Uri(address);
            client.UploadFileCompleted += new UploadFileCompletedEventHandler(UploadFileCallback2);
            client.UploadProgressChanged += new UploadProgressChangedEventHandler(UploadProgressCallback);
            client.UploadFileAsync(uri, fileName);
            Console.WriteLine("File upload started.");
        }
        static void UploadProgressCallback(object sender, UploadProgressChangedEventArgs e)
        {

            if (iCurPercent != e.ProgressPercentage)
            {
                iCurPercent = e.ProgressPercentage;
                pg.Minimum = 0;
                pg.Maximum = 100;
                pg.Value = iCurPercent;
                Console.WriteLine("{0}    uploaded {1} of {2} bytes. {3} % complete...",
               (string)e.UserState, e.BytesSent, e.TotalBytesToSend, e.ProgressPercentage);
            }
        }
        private static void UploadFileCallback2(object sender, UploadFileCompletedEventArgs e)
        {
            TestResult = TimeSpan.FromTicks(DateTime.Now.Ticks - ExexcuteSeepStartTime).ToString();
            tb.Text += "文件上传完毕!" + "\r\n" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "\r\n耗费时间:" + TestResult + "\r\n";
            ISOCreater.WorkState = false;
            pg.Value = 0;
            tssl.Text = "等待处理";

            Console.WriteLine("Over Make!");
        }
        static TextBox tb = null;
        static ToolStripStatusLabel tssl = null;
        static ToolStripProgressBar pg = null;
        static int iCurPercent = 0;
        #endregion
        /// <summary>
        /// 打开光驱托盘门
        /// </summary>
        public void OpenCdRomDoor()
        {
            try
            {
                ISOCreater.mciSendString("set cdaudio door open wait", "", 0, this.Handle);
            }
            catch(Exception ex)
            {
                ErrMessage = ex.Message;
            }
        }
        /// <summary>
        /// 关闭光驱托盘门
        /// </summary>
        public void CLoseCdRomDoor()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -