向上傳文件服務器,向服務器上傳文件

//--------------------向服務器上傳文件------

//瀏覽選擇需要上傳的文件

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);

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/534522.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/534522.shtml
英文地址,請注明出處:http://en.pswp.cn/news/534522.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

知道python測試答案_大數據分析的python基礎知道章節測試答案

大數據分析的python基礎知道章節測試答案更多相關問題下列是內流湖的是[ ]A、青海湖      B、洪澤湖 C、洞庭湖       D、西湖下列河流冬季有結冰現象的是[ ]A、松花江 B、黃河 C、珠江 D、長江我國最大湖是________湖&#xff0c;它屬于________湖&#xff0c;我國最…

vcenter服務器修改ip,vcenter服務器默認ip地址

vcenter服務器默認ip地址 內容精選換一換安全組類似防火墻功能&#xff0c;是一個邏輯上的分組&#xff0c;用于設置網絡訪問控制。用戶可以在安全組中定義各種訪問規則&#xff0c;當彈性云服務器加入該安全組后&#xff0c;即受到這些訪問規則的保護。入方向&#xff1a;入方…

兒童吹泡泡水簡單配方_兒童吹泡泡玩具水怎么制作

玩具是每個孩子成長所必須&#xff0c;給寶寶選擇玩具的方法也不是那么簡單的。給寶寶做玩具就更加不簡單了&#xff0c;需要學習相關的教程才可以。那么&#xff0c;兒童吹泡泡玩具水怎么制作呢?跟著小編一起來看看關于兒童吹泡泡玩具的那些事吧!兒童吹泡泡玩具水怎么制作1、…

cuisineroyale服務器所在位置,cuisine royale進不去怎么辦?原因及解決辦法分享

cuisine royale是最近非常好玩的詼諧版吃雞游戲&#xff0c;cuisine royale進不去應該怎么辦呢&#xff1f;下面小編就來為大家詳細的介紹一下cuisine royale進不去的原因及解決辦法&#xff0c;感興趣的玩家快來看看吧&#xff01;cuisine royale玩不了怎么辦&#xff1f;游戲…

雙表查詢java代碼_多表增刪改查

[java]代碼庫package com.ww.service;import java.lang.reflect.Array;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import com.mysql.jdbc.PreparedStatement;import com.ww.db.DBHelper;import com.ww.e…

服務器項目前端調用攝像頭失敗,瀏覽器調用攝像頭失敗:NotSupportedError Only secure origins are allowed...

通過瀏覽器調用攝像頭失敗&#xff1a;NotSupportedError Only secure origins are allowed錯誤報告NotSupportedError Only secure origins are allowed (see: https://goo.gl/Y0ZkNV).[Deprecation] getUserMedia() no longer works on insecure origins. To use this featur…

greenplum 存儲過程_揭秘!Greenplum并行執行引擎到底是如何工作的?

《深入淺出Greenplum內核》系列直播以每月一場的速度持續推出中。在第一場《架構解讀》直播里&#xff0c;我們了解了Greenplum的整體架構、存儲管理、索引、查詢執行、事務與日志等內容。今天(5月22日)&#xff0c;第二場《Greenplum內核揭秘之執行引擎》也順利播出啦&#xf…

倩女幽魂服務器維護時間,9月5日在線維護公告

親愛的玩家&#xff1a;《倩女幽魂》手游將于本周四上午進行在線更新&#xff0c;更新期間無需停服&#xff0c;玩家可照常進行游戲。歡迎您屆時體驗本周放出的全新內容&#xff0c;祝全體玩家游戲愉快&#xff01;本周四在線更新內容如下&#xff1a;系統1.跨服隊伍和團隊功能…

區塊鏈是什么通俗解釋_區塊鏈是什么?如何用一句話通俗解釋區塊鏈

站長之家(Chinaz.com)注&#xff1a;很多人可能跟小編一樣&#xff0c;為了搞懂區塊鏈的概念&#xff0c;看了無數篇文章&#xff0c;但是很多說的都是大概念。雖然每個字都看得懂&#xff0c;但是連在一起就看不懂了。那么&#xff0c;區塊鏈到底是什么東西呢?如何用一句話通…

和push的區別_還沒有理解let 和 const的用法和區別嗎,幾百字讓你立馬搞懂

本文主要講解ES6中變量的相關操作&#xff0c;變量的命名&#xff0c; 講解 var、 let 、 const 三者的區別正文ES6中的 let 和 const 都是用來聲明變量的&#xff0c; 他們與 var 有所區別let 命令我們都知道在for循環中&#xff0c;我們命名的變量 i 一般都只是為了在這個循環…

深度學習分類類別不平衡_「圖像分類」 關于圖像分類中類別不平衡那些事

作者&編輯 | 郭冰洋1 簡介小伙伴們在利用公共數據集動手搭建圖像分類模型時&#xff0c;有沒有注意到這樣一個問題呢——每個數據集不同類別的樣本數目幾乎都是一樣的。這是因為不同類別的樣例數目差異較小&#xff0c;對分類器的性能影響不大&#xff0c;可以在避免其他因…

vue設置多選框默認勾選_Vue實現全選和反選即Vue復選框增加全選功能

導語:Vue中單選下拉框開發起來非常簡單,直接select包裹一個帶v-for的option即可但是當我們想做個帶多選的下拉框該怎么辦呢?最簡方法是什么?比如下面這個圖:如果網上搜的話,搜的是一堆帶children的 ,那種是遍歷tree的思想,和多選下拉框不是一回事,而且寫起來復雜看不懂源碼再…

pyqt5 下拉 多頁 點擊_PyQt5實戰——自定義翻頁控件實現

分頁控件效果圖一、環境要求python解釋器&#xff1a;python3.7.4依賴&#xff1a;PyQt5、sys模塊二、思路分析1、布局&#xff1a;”上一頁“、”下一頁“等button、edit及label控件采用水平布局&#xff0c;使用該布局填充主控件QWidget2、類繼承關系&#xff1a;主界面繼承自…

三種平攤分析的方法分別為_干貨|電工必須學會的三極管電路分析方法

三極管有靜態和動態兩種工作狀態。未加信號時三極管的直流工作狀態稱為靜態&#xff0c;此時各極電流稱為靜態電流&#xff0c;給三極管加入交流信號之后的工作電流稱為動態工作電流&#xff0c;這時三極管是交流工作狀態&#xff0c;即動態。一個完整的三極管電路分析有四步&a…

休眠后gpio狀態_淺談Digi XBee模塊的休眠模式

淺談Digi XBee模塊的休眠模式2020-3-25Digi XBee S2C模塊&#xff0c;如果僅連接電源線可以測得&#xff0c;在待機情況下&#xff0c;大約是10.5mA左右的電流&#xff0c;在休眠時的功耗可以低到0.5uA。可以知道&#xff0c;休眠幾乎不耗電。在Spec上標的待機功耗會比實測只接…

xodo上的筆記不見了_一起來“終極筆記名場面批發市場”進貨嗎

俗話說得好&#xff0c;誰都逃不過“真香定律”&#xff0c;三天不見小筆記&#xff0c;想他。不對&#xff0c;不應該叫小筆記&#xff0c;應該叫粉絲起的名字——“【瓶邪黑花】《終極筆記》(原著風/連載)”下面請接受來自粉絲的瘋狂打call~自上周《終極筆記》播出&#xff0…

python3學習筆記 雨痕_Python 3 學習筆記:數字和布爾

數字基本類型整數在 Python 編程中&#xff0c;整數就是數學意義上的整數&#xff0c;包括正整數、負整數和零&#xff0c;且它的位數是任意的。根據表示方法的不同&#xff0c;可以分為&#xff1a;二進制整數八進制整數十進制整數十六進制整數浮點數浮點數&#xff0c;即數學…

不越獄換壁紙_那些不舍得換的手機插畫壁紙,你還差幾張?

酷愛收藏美作的微課菌可以大展拳腳了&#xff01;分享3位自己收藏的畫師作品&#xff0c;絕對每一張都讓你舍不得換&#xff0c;手機可以扔&#xff0c;壁紙得先拷貝存起來&#xff01;開始吧&#xff01;&#xff01;多圖預警&#xff01;NO.1&#xff1a;Atey Ghailan&#x…

程序員績效總結_年終總結怎么寫?

每年這時候&#xff0c;都有必要寫一下一年的個人工作總結。年終總結或工作總結是個挺重要的事。寫好的話&#xff0c;有助于說明自己的工作績效&#xff0c;績效好可以多拿年終獎&#xff0c;還有機會爭取晉升。另外&#xff0c;一年下來的個人生活也需要總結&#xff0c;這一…

線程停止繼續_線程不是你想中斷就能中斷

這是我2021年的第2篇原創文章&#xff0c;原汁原味的技術之路盡在Jerrycodes為什么不強制停止如何用 interrupt 停止線程sleep 期間能否感受到中斷停止線程的方式有幾種總結啟動線程需要調用 Thread 類的 start() 方法&#xff0c;并在 run() 方法中定義需要執行的任務。啟動一…