国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#實現圖片上傳(PC端和APP)保存及 跨域上傳說明

2019-10-29 21:17:21
字體:
來源:轉載
供稿:網友

A-PC端:

1-頁面--multiple是控制單張還是多張圖片上傳

<input id="BusRoute" type="file" class="btn btn-default btn-lg" style="height:34px;padding-top:5px;padding-bottom:5px;" multiple />

2-后臺獲取圖片文件:

HttpFileCollection pcFileColl = HttpContext.Current.Request.Files;

3-保存示例:

#region 創建目錄//完整存儲路徑string completeUrl = "";//相對等級路徑string relativeUrl = "";//string saveTempPath = "~/Resources/Pic";//string picUploadPath = HttpContext.Current.Server.MapPath(saveTempPath);//添加根目錄completeUrl = @"//10.0.8.52/YuanXinFiles/Office/"; ;//添加一級目錄string relativeOneUrl = DateTime.Now.Year.ToString();completeUrl += "//" + relativeOneUrl;relativeUrl += "//" + relativeOneUrl;if (!Directory.Exists(completeUrl)){Directory.CreateDirectory(completeUrl);}//添加二級目錄string relativeTwoUrl = DateTime.Now.Month.ToString();completeUrl += "//" + relativeTwoUrl;relativeUrl += "//" + relativeTwoUrl;if (!Directory.Exists(completeUrl)){Directory.CreateDirectory(completeUrl);}#endregion//保存HttpFileCollection picColl = picModel.PcFileColl;for (var i = 0; i < picColl.Count; i++){HttpPostedFile file = picColl[i];//保存圖片//保存至指定目錄file.SaveAs(completeUrl + "//" + fileName);}

B-APP:

前端頁面長什么樣不管了,后臺拿到的是base64的字符串集合.

1-保存示例:

#region 創建目錄//完整存儲路徑string completeUrl = "";//相對等級路徑string relativeUrl = "";//string saveTempPath = "~/Resources/Pic";//string picUploadPath = HttpContext.Current.Server.MapPath(saveTempPath);//添加根目錄completeUrl = @"//10.0.8.52/YuanXinFiles/Office/"; ;//添加一級目錄string relativeOneUrl = DateTime.Now.Year.ToString();completeUrl += "//" + relativeOneUrl;relativeUrl += "//" + relativeOneUrl;if (!Directory.Exists(completeUrl)){Directory.CreateDirectory(completeUrl);}//添加二級目錄string relativeTwoUrl = DateTime.Now.Month.ToString();completeUrl += "//" + relativeTwoUrl;relativeUrl += "//" + relativeTwoUrl;if (!Directory.Exists(completeUrl)){Directory.CreateDirectory(completeUrl);}#endregion //保存byte[] bytes = Convert.FromBase64String(strPic.picCode);MemoryStream memStream = new MemoryStream(bytes);BinaryFormatter binFormatter = new BinaryFormatter();System.Drawing.Bitmap map = new Bitmap(memStream);Image image = (Image)map; string imageName = Guid.NewGuid().ToString("N");//保存圖片image.Save(completeUrl + "//" + imageName + "." + strPic.picType); //保存圖片

C-跨域保存問題:

跨域的常見場景如下圖所示:我們通過電腦的網絡影射,連接到所需要的目錄,這里添加上擁有權限的人員賬號即可訪問目標文件夾,那么使用C#代碼如何獲得訪問權限呢?

c#,實現圖片上傳,c#跨域上傳

要獲取以上訪問權限,需要引用一個類和添加一些簡單代碼:

1-訪問代碼:

/// <summary>/// 通過指定用戶執行上次圖片操作/// </summary>/// <param name="uploadAction"></param>public void UploadFileByUser(Action uploadAction){//參考類:D:/SourceCode/MCSFramework/02.Develop/MobileWebApp/YuanXin/Services/FileUploadService/Controllers/UploadController.cs//無法通過權限認證--只能通過外網訪問try{var ip = "10.0.8.52";var domain = "sinooceanland";var username = ConfigurationManager.AppSettings["uploadUserName"].ToString(); //配置的用戶名var pwd = ConfigurationManager.AppSettings["uploadPassword"].ToString(); //配置的密碼var root = ConfigurationManager.AppSettings["uploadRootPath"].ToString(); //配置的文件根路徑using (NetworkShareAccesser.Access(ip, domain, username, pwd)) //建立連接{uploadAction(); //圖片保存代碼}}catch (System.Exception e){}}

2-必須類:

public class NetworkShareAccesser : IDisposable{private string _remoteUncName;private string _remoteComputerName;public string RemoteComputerName{get{return this._remoteComputerName;}set{this._remoteComputerName = value;this._remoteUncName = @"//" + this._remoteComputerName;}}public string UserName{get;set;}public string Password{get;set;}#region Constsprivate const int RESOURCE_CONNECTED = 0x00000001;private const int RESOURCE_GLOBALNET = 0x00000002;private const int RESOURCE_REMEMBERED = 0x00000003;private const int RESOURCETYPE_ANY = 0x00000000;private const int RESOURCETYPE_DISK = 0x00000001;private const int RESOURCETYPE_PRINT = 0x00000002;private const int RESOURCEDISPLAYTYPE_GENERIC = 0x00000000;private const int RESOURCEDISPLAYTYPE_DOMAIN = 0x00000001;private const int RESOURCEDISPLAYTYPE_SERVER = 0x00000002;private const int RESOURCEDISPLAYTYPE_SHARE = 0x00000003;private const int RESOURCEDISPLAYTYPE_FILE = 0x00000004;private const int RESOURCEDISPLAYTYPE_GROUP = 0x00000005;private const int RESOURCEUSAGE_CONNECTABLE = 0x00000001;private const int RESOURCEUSAGE_CONTAINER = 0x00000002;private const int CONNECT_INTERACTIVE = 0x00000008;private const int CONNECT_PROMPT = 0x00000010;private const int CONNECT_REDIRECT = 0x00000080;private const int CONNECT_UPDATE_PROFILE = 0x00000001;private const int CONNECT_COMMANDLINE = 0x00000800;private const int CONNECT_CMD_SAVECRED = 0x00001000;private const int CONNECT_LOCALDRIVE = 0x00000100;#endregion#region Errorsprivate const int NO_ERROR = 0;private const int ERROR_ACCESS_DENIED = 5;private const int ERROR_ALREADY_ASSIGNED = 85;private const int ERROR_BAD_DEVICE = 1200;private const int ERROR_BAD_NET_NAME = 67;private const int ERROR_BAD_PROVIDER = 1204;private const int ERROR_CANCELLED = 1223;private const int ERROR_EXTENDED_ERROR = 1208;private const int ERROR_INVALID_ADDRESS = 487;private const int ERROR_INVALID_PARAMETER = 87;private const int ERROR_INVALID_PASSWORD = 1216;private const int ERROR_MORE_DATA = 234;private const int ERROR_NO_MORE_ITEMS = 259;private const int ERROR_NO_NET_OR_BAD_PATH = 1203;private const int ERROR_NO_NETWORK = 1222;private const int ERROR_BAD_PROFILE = 1206;private const int ERROR_CANNOT_OPEN_PROFILE = 1205;private const int ERROR_DEVICE_IN_USE = 2404;private const int ERROR_NOT_CONNECTED = 2250;private const int ERROR_OPEN_FILES = 2401;#endregion#region PInvoke Signatures[DllImport("Mpr.dll")]private static extern int WNetUseConnection(IntPtr hwndOwner,NETRESOURCE lpNetResource,string lpPassword,string lpUserID,int dwFlags,string lpAccessName,string lpBufferSize,string lpResult);[DllImport("Mpr.dll")]private static extern int WNetCancelConnection2(string lpName,int dwFlags,bool fForce);[StructLayout(LayoutKind.Sequential)]private class NETRESOURCE{public int dwScope = 0;public int dwType = 0;public int dwDisplayType = 0;public int dwUsage = 0;public string lpLocalName = "";public string lpRemoteName = "";public string lpComment = "";public string lpProvider = "";}#endregion/// <summary>/// Creates a NetworkShareAccesser for the given computer name. The user will be promted to enter credentials/// </summary>/// <param name="remoteComputerName"></param>/// <returns></returns>public static NetworkShareAccesser Access(string remoteComputerName){return new NetworkShareAccesser(remoteComputerName);}/// <summary>/// Creates a NetworkShareAccesser for the given computer name using the given domain/computer name, username and password/// </summary>/// <param name="remoteComputerName"></param>/// <param name="domainOrComuterName"></param>/// <param name="userName"></param>/// <param name="password"></param>public static NetworkShareAccesser Access(string remoteComputerName, string domainOrComuterName, string userName, string password){return new NetworkShareAccesser(remoteComputerName,domainOrComuterName + @"/" + userName,password);}/// <summary>/// Creates a NetworkShareAccesser for the given computer name using the given username (format: domainOrComputername/Username) and password/// </summary>/// <param name="remoteComputerName"></param>/// <param name="userName"></param>/// <param name="password"></param>public static NetworkShareAccesser Access(string remoteComputerName, string userName, string password){return new NetworkShareAccesser(remoteComputerName,userName,password);}private NetworkShareAccesser(string remoteComputerName){RemoteComputerName = remoteComputerName;this.ConnectToShare(this._remoteUncName, null, null, true);}private NetworkShareAccesser(string remoteComputerName, string userName, string password){RemoteComputerName = remoteComputerName;UserName = userName;Password = password;this.ConnectToShare(this._remoteUncName, this.UserName, this.Password, false);}private void ConnectToShare(string remoteUnc, string username, string password, bool promptUser){NETRESOURCE nr = new NETRESOURCE{dwType = RESOURCETYPE_DISK,lpRemoteName = remoteUnc};int result;if (promptUser){result = WNetUseConnection(IntPtr.Zero, nr, "", "", CONNECT_INTERACTIVE | CONNECT_PROMPT, null, null, null);}else{result = WNetUseConnection(IntPtr.Zero, nr, password, username, 0, null, null, null);}if (result != NO_ERROR){throw new Win32Exception(result);}}private void DisconnectFromShare(string remoteUnc){int result = WNetCancelConnection2(remoteUnc, CONNECT_UPDATE_PROFILE, false);if (result != NO_ERROR){throw new Win32Exception(result);}}/// <summary>/// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources./// </summary>/// <filterpriority>2</filterpriority>public void Dispose(){this.DisconnectFromShare(this._remoteUncName);}}

以上所述是小編給大家介紹的C#實現圖片上傳(PC端和APP)保存及 跨域上傳說明,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 抚宁县| 林周县| 永春县| 阿拉善右旗| 卓尼县| 洪泽县| 南川市| 永寿县| 霍邱县| 科技| 从江县| 资阳市| 肥城市| 翁源县| 桃园县| 托克逊县| 兴义市| 乌什县| 苏州市| 隆昌县| 稷山县| 泰州市| 土默特左旗| 唐海县| 宣威市| 遵义市| 郧西县| 桐柏县| 青浦区| 陇西县| 通山县| 邮箱| 梅州市| 城市| 孟津县| 华亭县| 军事| 陵水| 稷山县| 疏勒县| 台州市|