//--------------------向服務器上傳文件------
//瀏覽選擇需要上傳的文件
private static bool Unzip(string address, string filezip)
{
//創建對話框
OpenFileDialog ofd = new OpenFileDialog();
ofd.Title = "請選擇上傳的文件";
//規定文件類型
ofd.Filter = "zip(*.zip)|*.zip;";
//判斷是否選擇文件
if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
//獲得文件的完整路徑(包括名字后后綴)
FilePath = ofd.FileName;
//計算文件KB大小.字節/1024
txtFileSize.Text = Math.Round(new System.IO.FileInfo(FilePath).Length / 1024.0, 2).ToString();
}
}
//上傳文件
private void UploadFileIng()
{
//截止文件名稱
string fileName = FilePath.Substring( FilePath.LastIndexOf("\\") + 1);
//文件上傳
System.IO.FileInfo fileInfoIO = new System.IO.FileInfo(FilePath);
FileStream fs = File.OpenRead(fileInfoIO.FullName);
//獲取文件MD5值
try
{
int maxSiz = 1024 * 100;
// 根據文件名獲取服務器上的文件
CustomFileInfo file = client.GetFileInfo(fileInfoIO.Name);
if (file == null)
{
file = new CustomFileInfo();
file.OffSet = 0;
}
file.Name = fileInfoIO.Name;
file.Length = fs.Length;
fs.Close();
fs.Dispose();
if (file.Length == file.OffSet) //如果文件的長度等于文件的偏移量,說明文件已經上傳完成
{
MessageBox.Show("該文件已存在");
}
else
{
//while (file.Length != file.OffSet)
//{
file.SendByte = new byte[file.Length - file.OffSet <= maxSiz ? file.Length - file.OffSet : maxSiz]; //設置傳遞的數據的大小
file = client.UpLoadFileInfo(file, sysConfig); //上傳
// //int percent = (int)((double)file.OffSet / (double)((long)file.Length)) * 100;
// int percent = (int)(((double)file.OffSet / (double)((long)file.Length)) * 100);
//}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
client.Close();
client.Abort();
}
}
//客戶端請求配置ServerClient
public CustomFileInfo UpLoadFileInfo(CustomFileInfo fileInfo,SysConfig sysconfig)
{
return this.Channel.UpLoadFileInfo(fileInfo, sysconfig);
}
//實現接口 Server
public CustomFileInfo UpLoadFileInfo(CustomFileInfo fileInfo,SysConfig sysconfig)
{
// 獲取服務器文件上傳路徑
string fileUpLoadPath = System.Web.HttpContext.Current.Server.MapPath(sysconfig.addressFile);
// 如需指定新的文件夾,需要進行創建操作。
if (!Directory.Exists(fileUpLoadPath))
{
Directory.CreateDirectory(fileUpLoadPath);
}
// 創建FileStream對象
FileStream fs = new FileStream(fileUpLoadPath + fileInfo.Name, FileMode.OpenOrCreate);
long offSet = fileInfo.OffSet;
// 使用提供的流創建BinaryWriter對象
var binaryWriter = new BinaryWriter(fs, Encoding.UTF8);
binaryWriter.Seek((int)offSet, SeekOrigin.Begin);
binaryWriter.Write(fileInfo.SendByte);
fileInfo.OffSet = fs.Length;
fileInfo.SendByte = null;
fileInfo.path = fileUpLoadPath ;
binaryWriter.Close();
fs.Close();
return fileInfo;
}
public CustomFileInfo GetFileInfo(string fileName)
{
string filePath = System.Web.Hosting.HostingEnvironment.MapPath("~/UpLoadFile/") + fileName;
if (File.Exists(filePath))
{
var fs = new FileStream(filePath, FileMode.OpenOrCreate);
CustomFileInfo fileInfo = new CustomFileInfo
{
Name = fileName,
OffSet = fs.Length,
};
fs.Close();
return fileInfo;
}
return null;
}
//定有接口 IServer
[OperationContract]
CustomFileInfo UpLoadFileInfo(CustomFileInfo fileInfo, SysConfig sysConfig);
[OperationContract]
CustomFileInfo GetFileInfo(string fileName);