上傳文件代碼
web.config
1
2
3
4
5
|
<!--上傳文件配置,UploadPath值一定是服務(wù)器ip,內(nèi)網(wǎng)ip最好--> < add key = "UploadPath" value = "\\172.21.0.10\File" /> < add key = "DownloadPath" value = "http://x.x.x.x:80/" /> < add key = "UserName" value = "ShareUser" /> < add key = "Password" value = "P@ssw0rd" /> |
工具方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
public static string GetConfigString( string key, string @ default = "" ) { return ConfigurationManager.AppSettings[key] ?? @ default ; } /// <summary> /// 根據(jù)文件名(包含文件擴(kuò)展名)獲取要保存的文件夾名稱 /// </summary> public class FileHelper { /// <summary> /// 根據(jù)文件名(包含文件擴(kuò)展名)獲取要保存的文件夾名稱 /// </summary> /// <param name="fileName">文件名(包含文件擴(kuò)展名)</param> public static string GetSaveFolder( string fileName) { var fs = fileName.Split( '.' ); var ext = fs[fs.Length - 1]; var str = string .Empty; var t = ext.ToLower(); switch (t) { case "jpg" : case "jpeg" : case "png" : case "gif" : str = "images" ; break ; case "mp4" : case "mkv" : case "rmvb" : str = "video" ; break ; case "apk" : case "wgt" : str = "app" ; break ; case "ppt" : case "pptx" : case "doc" : case "docx" : case "xls" : case "xlsx" : case "pdf" : str = "file" ; break ; default : str = "file" ; break ; } return str; } } /// <summary> /// 記錄日志幫助類 /// </summary> public class WriteHelper { public static void WriteFile( object data) { try { string path = $ @"C:\Log\" ; var filename = $ "Log.txt" ; if (!Directory.Exists(path)) Directory.CreateDirectory(path); TextWriter tw = new StreamWriter(Path.Combine(path, filename), true ); //true在文件末尾添加數(shù)據(jù) tw.WriteLine($ "----產(chǎn)生時(shí)間:{DateTime.Now:yyyy-MM-dd HH:mm:ss}---------------------------------------------------------------------" ); tw.WriteLine(data.ToJson()); tw.Close(); } catch (Exception e) { } } } |
常量
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
/// <summary> /// 文件上傳配置項(xiàng) /// </summary> public class FileUploadConst { /// <summary> /// 上傳地址 /// </summary> public static string UploadPath => ConfigHelper.GetConfigString( "UploadPath" ); /// <summary> /// 文件訪問(wèn)/下載地址 /// </summary> public static string DownloadPath => ConfigHelper.GetConfigString( "DownloadPath" ); /// <summary> /// 訪問(wèn)共享目錄用戶名 /// </summary> public static string UserName => ConfigHelper.GetConfigString( "UserName" ); /// <summary> /// 訪問(wèn)共享目錄密碼 /// </summary> public static string Password => ConfigHelper.GetConfigString( "Password" ); } |
具體上傳文件代碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
/// <summary> /// 上傳文件到共享文件夾 /// </summary> [HttpPost, Route( "api/Upload/UploadAttachment" )] [AllowAnonymous] public ServiceResponse<UploadRespModel> UploadAttachment() { var viewModel = new UploadRespModel(); var code = 200; var msg = "上傳失敗!" ; var path = FileUploadConst.UploadPath; //@"\\172.16.10.130\Resource"; var s = connectState(path, FileUploadConst.UserName, FileUploadConst.Password); if (s) { var filelist = HttpContext.Current.Request.Files; if (filelist.Count > 0) { var file = filelist[0]; var fileName = file.FileName; var blobName = FileHelper.GetSaveFolder(fileName); path = $ @"{path}\{blobName}\" ; fileName = $ "{DateTime.Now:yyyyMMddHHmmss}{fileName}" ; //共享文件夾的目錄 var theFolder = new DirectoryInfo(path); var remotePath = theFolder.ToString(); Transport(file.InputStream, remotePath, fileName); viewModel.SaveUrl = $ "{blobName}/{fileName}" ; viewModel.DownloadUrl = PictureHelper.GetFileFullPath(viewModel.SaveUrl); msg = "上傳成功" ; } } else { code = CommonConst.Code_OprateError; msg = "鏈接服務(wù)器失敗" ; } return ServiceResponse<UploadRespModel>.SuccessResponse(msg, viewModel, code); } /// <summary> /// 連接遠(yuǎn)程共享文件夾 /// </summary> /// <param name="path">遠(yuǎn)程共享文件夾的路徑</param> /// <param name="userName">用戶名</param> /// <param name="passWord">密碼</param> private static bool connectState( string path, string userName, string passWord) { bool Flag = false ; Process proc = new Process(); try { proc.StartInfo.FileName = "cmd.exe" ; proc.StartInfo.UseShellExecute = false ; proc.StartInfo.RedirectStandardInput = true ; proc.StartInfo.RedirectStandardOutput = true ; proc.StartInfo.RedirectStandardError = true ; proc.StartInfo.CreateNoWindow = true ; proc.Start(); string dosLine = "net use " + path + " " + passWord + " /user:" + userName; WriteHelper.WriteFile($ "dosLine:{dosLine}" ); proc.StandardInput.WriteLine(dosLine); proc.StandardInput.WriteLine( "exit" ); while (!proc.HasExited) { proc.WaitForExit(1000); } string errormsg = proc.StandardError.ReadToEnd(); proc.StandardError.Close(); WriteHelper.WriteFile($ "errormsg:{errormsg}" ); if ( string .IsNullOrEmpty(errormsg)) { Flag = true ; } else { throw new Exception(errormsg); } } catch (Exception ex) { WriteHelper.WriteFile(ex); throw ex; } finally { proc.Close(); proc.Dispose(); } return Flag; } /// <summary> /// 向遠(yuǎn)程文件夾保存本地內(nèi)容,或者從遠(yuǎn)程文件夾下載文件到本地 /// </summary> /// <param name="inFileStream">要保存的文件的路徑,如果保存文件到共享文件夾,這個(gè)路徑就是本地文件路徑如:@"D:\1.avi"</param> /// <param name="dst">保存文件的路徑,不含名稱及擴(kuò)展名</param> /// <param name="fileName">保存文件的名稱以及擴(kuò)展名</param> private static void Transport(Stream inFileStream, string dst, string fileName) { WriteHelper.WriteFile($ "目錄-Transport:{dst}" ); if (!Directory.Exists(dst)) { Directory.CreateDirectory(dst); } dst = dst + fileName; if (!File.Exists(dst)) { WriteHelper.WriteFile($ "文件不存在,開(kāi)始保存" ); var outFileStream = new FileStream(dst, FileMode.Create, FileAccess.Write); var buf = new byte [inFileStream.Length]; int byteCount; while ((byteCount = inFileStream.Read(buf, 0, buf.Length)) > 0) { outFileStream.Write(buf, 0, byteCount); } WriteHelper.WriteFile($ "保存完成" ); inFileStream.Flush(); inFileStream.Close(); outFileStream.Flush(); outFileStream.Close(); } } |
以上就是ASP.NET 上傳文件到共享文件夾的示例的詳細(xì)內(nèi)容,更多關(guān)于ASP.NET 上傳文件的資料請(qǐng)關(guān)注服務(wù)器之家其它相關(guān)文章!
原文鏈接:https://www.cnblogs.com/dawenyang/p/13493179.html