2017-10-01 15:59:37 +08:00
|
|
|
|
using System;
|
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using System.ComponentModel;
|
|
|
|
|
|
using System.Data;
|
|
|
|
|
|
using System.Drawing;
|
|
|
|
|
|
using System.Linq;
|
|
|
|
|
|
using System.Text;
|
|
|
|
|
|
using System.Windows.Forms;
|
|
|
|
|
|
using System.IO;
|
|
|
|
|
|
using System.Threading;
|
|
|
|
|
|
using HslCommunication.Enthernet;
|
|
|
|
|
|
using HslCommunication;
|
2017-10-15 16:04:28 +08:00
|
|
|
|
using CommonLibrary;
|
2017-10-01 15:59:37 +08:00
|
|
|
|
|
|
|
|
|
|
namespace ClientsLibrary.FileSupport
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 用于文件上传的类
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public partial class FormSimplyFileUpload : Form
|
|
|
|
|
|
{
|
|
|
|
|
|
#region Constructor
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 实例化一个文件上传的窗口
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="factory">第一大类</param>
|
|
|
|
|
|
/// <param name="group">第二大类</param>
|
|
|
|
|
|
/// <param name="id">第三大类</param>
|
|
|
|
|
|
public FormSimplyFileUpload(string factory, string group, string id)
|
|
|
|
|
|
{
|
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
|
|
2017-10-15 16:04:28 +08:00
|
|
|
|
Icon = UserSystem.GetFormWindowIcon();
|
2017-10-01 15:59:37 +08:00
|
|
|
|
fileItem = new GroupFileItem();
|
|
|
|
|
|
fileClient = UserClient.Net_File_Client;
|
|
|
|
|
|
Factory = factory;
|
|
|
|
|
|
Group = group;
|
|
|
|
|
|
Id = id;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region Close Check
|
|
|
|
|
|
|
|
|
|
|
|
private void FormUploadFile_FormClosing(object sender, FormClosingEventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!userButton1.Enabled)
|
|
|
|
|
|
{
|
|
|
|
|
|
MessageBox.Show("请等待上传完成才能关闭窗口。");
|
|
|
|
|
|
e.Cancel = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region Window Load Show
|
|
|
|
|
|
|
|
|
|
|
|
private void FormSimplyFileUpload_Load(object sender, EventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region Upload Support
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 用于报告进度的方法
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="current"></param>
|
|
|
|
|
|
/// <param name="count"></param>
|
|
|
|
|
|
private void ReportProgress(long current, long count)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (InvokeRequired)
|
|
|
|
|
|
{
|
|
|
|
|
|
BeginInvoke(new Action(() =>
|
|
|
|
|
|
{
|
|
|
|
|
|
ReportProgress(current, count);
|
|
|
|
|
|
}));
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
long percent = 0;
|
|
|
|
|
|
if (count > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
percent = current * 100 / count;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
progressBar1.Value = (int)percent;
|
|
|
|
|
|
toolStripStatusLabel2.Text = "正在上传文件(" + percent.ToString() + "%)";
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 上传文件的后台线程
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
private void ThreadUploadFile()
|
|
|
|
|
|
{
|
|
|
|
|
|
toolStripStatusLabel2.Text = "正在上传文件...";
|
|
|
|
|
|
|
|
|
|
|
|
Thread.Sleep(500);
|
|
|
|
|
|
OperateResult result = fileClient.UploadFile(
|
|
|
|
|
|
file_full_name, // 本地文件的完整路径
|
|
|
|
|
|
fileItem.FileName, // 在服务器端需要保存的文件名,此处和本地文件名一致
|
|
|
|
|
|
Factory, // 文件的第一大类
|
|
|
|
|
|
Group, // 文件的第二大类
|
|
|
|
|
|
Id, // 文件的第三大类
|
|
|
|
|
|
fileItem.Description, // 文件的额外描述
|
|
|
|
|
|
UserClient.UserAccount.UserName, // 文件的上传人
|
|
|
|
|
|
ReportProgress // 文件的进度报告
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
if (result.IsSuccess)
|
|
|
|
|
|
{
|
|
|
|
|
|
Invoke(new Action(() =>
|
|
|
|
|
|
{
|
|
|
|
|
|
userButton1.Enabled = true;
|
|
|
|
|
|
toolStripStatusLabel2.Text = "文件发送完成。";
|
|
|
|
|
|
}));
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
Invoke(new Action(() =>
|
|
|
|
|
|
{
|
|
|
|
|
|
MessageBox.Show("文件发送失败:" + result.Message);
|
|
|
|
|
|
userButton1.Enabled = true;
|
|
|
|
|
|
toolStripStatusLabel2.Text = "文件发送失败";
|
|
|
|
|
|
}));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region File Selected
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 选择需要上传的文件
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="sender"></param>
|
|
|
|
|
|
/// <param name="e"></param>
|
|
|
|
|
|
private void userButton2_Click(object sender, EventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
using (OpenFileDialog ofd = new OpenFileDialog())
|
|
|
|
|
|
{
|
|
|
|
|
|
ofd.Multiselect = false;
|
|
|
|
|
|
if (ofd.ShowDialog() == DialogResult.OK)
|
|
|
|
|
|
{
|
|
|
|
|
|
file_full_name = ofd.FileName;
|
|
|
|
|
|
textBox1.Text = file_full_name;
|
|
|
|
|
|
|
|
|
|
|
|
FileInfo info = new FileInfo(file_full_name);
|
|
|
|
|
|
fileItem.FileName = info.Name;
|
|
|
|
|
|
fileItem.FileSize = info.Length;
|
|
|
|
|
|
label4.Text = fileItem.GetTextFromFileSize();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region Start Upload
|
|
|
|
|
|
|
|
|
|
|
|
private void userButton1_Click(object sender, EventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
//上传
|
|
|
|
|
|
if (textBox1.Text != "")
|
|
|
|
|
|
{
|
|
|
|
|
|
fileItem.Description = textBox2.Text;
|
|
|
|
|
|
userButton1.Enabled = false;
|
|
|
|
|
|
progressBar1.Value = 0;
|
|
|
|
|
|
|
|
|
|
|
|
Thread thread_upload_file = new Thread(new ThreadStart(ThreadUploadFile));
|
|
|
|
|
|
thread_upload_file.IsBackground = true;
|
|
|
|
|
|
thread_upload_file.Start();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region Private Members
|
|
|
|
|
|
|
|
|
|
|
|
private IntegrationFileClient fileClient; // 数据传送对象
|
|
|
|
|
|
private string file_full_name = ""; // 文件的完整名称
|
|
|
|
|
|
private GroupFileItem fileItem; // 文件对象
|
|
|
|
|
|
private string Factory = ""; // 文件的第一大类
|
|
|
|
|
|
private string Group = ""; // 文件的第二大类
|
|
|
|
|
|
private string Id = ""; // 文件的第三大类
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|