📄 pmake.cs
字号:
/*制作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 + -