Winform文件上傳

来源:https://www.cnblogs.com/lovejunjuan/archive/2019/04/22/10750242.html
-Advertisement-
Play Games

近期在做了一個winform的項目的附件上傳的需求 最初項目選型的時候有三種 1.使用webservice、webapi上傳文件 2,直接保存在資料庫中 3.使用共用目錄+dos命令 第一種有文件大小限制、設計到的知識比較多,第二種會給資料庫增加不小的壓力,於是最後選了第三種 下麵上關鍵代碼,代碼很 ...


近期在做了一個winform的項目的附件上傳的需求

最初項目選型的時候有三種

1.使用webservice、webapi上傳文件

2,直接保存在資料庫中

3.使用共用目錄+dos命令

 

第一種有文件大小限制、設計到的知識比較多,第二種會給資料庫增加不小的壓力,於是最後選了第三種

下麵上關鍵代碼,代碼很簡單,每個函數都寫了說明

 1         /// <summary>
 2         /// 連接遠程目錄
 3         /// </summary>
 4         /// <param name="path"></param>
 5         /// <param name="userName"></param>
 6         /// <param name="passWord"></param>
 7         /// <returns></returns>
 8         public static bool connectState(string path=@"\\192.168.0.136\軟體", string userName= "administrator", string passWord="******")
 9         {
10             bool Flag = false;
11             Process proc = new Process();
12             try
13             {
14                 proc.StartInfo.FileName = "cmd.exe";
15                 proc.StartInfo.UseShellExecute = false;
16                 proc.StartInfo.RedirectStandardInput = true;
17                 proc.StartInfo.RedirectStandardOutput = true;
18                 proc.StartInfo.RedirectStandardError = true;
19                 proc.StartInfo.CreateNoWindow = true;
20                 proc.Start();
21                 //string dosLine1 = "net use * /del /y";
22                 string dosLine2 = "net use " + path + " " + passWord + " /user:" + userName;
23                 //proc.StandardInput.WriteLine(dosLine1);
24                 proc.StandardInput.WriteLine(dosLine2);
25                 proc.StandardInput.WriteLine("exit");
26                 while (!proc.HasExited)
27                 {
28                     proc.WaitForExit(1000);
29                 }
30                 string errormsg = proc.StandardError.ReadToEnd();
31                 proc.StandardError.Close();
32                 if (string.IsNullOrEmpty(errormsg))
33                 {
34                     Flag = true;
35                 }
36                 else
37                 {
38                     //throw new Exception(errormsg);
39                 }
40             }
41             catch (Exception ex)
42             {
43                 //throw ex;
44                 proc.Close();
45                 proc.Dispose();
46             }
47             finally
48             {
49                 proc.Close();
50                 proc.Dispose();
51             }
52             return Flag;
53         }
54         /// <summary>
55         /// 向遠程文件夾保存本地內容,或者從遠程文件夾下載文件到本地
56         /// </summary>
57         /// <param name="src">要保存的文件的路徑,如果保存文件到共用文件夾,這個路徑就是本地文件路徑如:@"D:\1.avi"</param>
58         /// <param name="dst">保存文件的路徑,不含名稱及擴展名</param>
59         /// <param name="fileName">保存文件的名稱以及擴展名</param>
60         public static void Transport(string src, string dst, string fileName)
61         {
62 
63             FileStream inFileStream = new FileStream(src, FileMode.Open);
64             if (!Directory.Exists(dst))
65             {
66                 Directory.CreateDirectory(dst);
67             }
68             dst = dst + fileName;
69             FileStream outFileStream = new FileStream(dst, FileMode.OpenOrCreate);
70 
71             byte[] buf = new byte[inFileStream.Length];
72 
73             int byteCount;
74 
75             while ((byteCount = inFileStream.Read(buf, 0, buf.Length)) > 0)
76             {
77                 outFileStream.Write(buf, 0, byteCount);
78             }
79 
80             inFileStream.Flush();
81             inFileStream.Close();
82             outFileStream.Flush();
83             outFileStream.Close();
84 
85         }
86         /// <summary>
87         /// 避免保存到伺服器上的文件有重覆,使用Guid對文件進行重命名
88         /// </summary>
89         public static string GetGuid
90         {
91             get
92             {
93                 return Guid.NewGuid().ToString().ToLower();
94             }
95         }

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • OO第二次博客作業——電梯調度 前言 最近三周,OO課程進入多線程學習階段,主要通過三次電梯調度作業來學習。從單部電梯的傻瓜式調度到有性能要求的調度到多部電梯的調度,難度逐漸提升,對同學們的要求逐漸變高,我們對線程的理解也逐漸加深。下麵筆者將對三次作業分別進行總結。 一、單部多線程傻瓜調度(FAFS ...
  • 1、我們首先創建一個文件夾(用於保存本地倉) 在我們想要創建的路徑下右鍵滑鼠打開Git Bash Here(創建一個文件夾,併進入文件夾) 2、通過命令git init把我們剛纔創建的文件夾變成Git可管理的倉 之後會在剛纔創建的文件夾內看到多了一個 .git 的文件夾,這個文件夾的作用是用來跟蹤和 ...
  • 好吧好吧,又談到這個問題了,其實早就想寫這個博客了,猶豫了好久。在設計游戲的時候我本人是很排斥什麼游戲架構設計,mvc什麼的,我只想馬上動手就把自己的游戲玩法最快的用代碼敲出來,還不會出無法輓回的錯誤,那麼下麵的步驟可以幫助你構建一個簡單的游戲模式架構。 一。首先是數據存儲類,如GameManage ...
  • 這是幾個簡單的例子,但是實際的開發中委托還還只在反射時用到過,事件的話只自己做了一次,並且還是特意去用的 ,實際上可以不用。線程的話,因為需要,所以用的會多點,這裡主要是WS上的線程。 委托 在前面的反射實例中,也有用到委托執行方法。 這個例子是將一個方法或者委托實例作為另外一個函數的入參傳遞。 至 ...
  • 我就不說這個Bug讓我調試了多久,怎麼坑的。。直接說結果。 伺服器上有兩個介面,一個是Web Services(asmx文件)介面,一個是MVC API (普通的GET請求介面) 神奇的事情是這樣的,我迴圈請求兩個介面的時候(不要問我為啥這樣寫),在第三次Web Services 超時。。 for( ...
  • TOTP 介紹及基於C 的簡單實現 Intro TOTP 是基於時間的一次性密碼生成演算法,它由 "RFC 6238" 定義。和基於事件的一次性密碼生成演算法不同 "HOTP" ,TOTP 是基於時間的,它和 HOTP 具有如下關係: 其中: T:T = (Current Unix time T0) / ...
  • 下麵是兩個反射的實例 案例1: 動態調用類中的方法、傳入參數,並獲得返回值。 xxxx:類名 Event:類中的方法 pra1,pra2,pra3:方法對應的入參 DoRet:方法返回的執行結果 案例2: 動態載入外部DLL,並執行其中的方法。 xxx:外部Dll的名字 zzz:Dll中的類名 yy ...
  • 遇到問題: 參照官方文檔敲完命令之後 出現了提示的問題Unable to lpcate package... ,隨後參照官方文檔解決方案,又出現瞭如下問題: 提示找不到依賴的Runtime,在嘗試過很多方法之後,終於在在Github上看到了一位解決過這個問題的方案如下 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...