|
|
目录9 P; r0 y9 ]# x" Q ^
6 c! ~: C) f3 |
* U% `: B* O1 S+ W5 B- y3 k2 Y" g9 @- 上传文件代码$ a: ?- T. W! F( e$ J# X6 H
( k( U; K9 l( \" R4 d: T
- web.config 0 l9 J; r: b+ D) S7 H: b2 K
- 工具方法
" f) t+ q5 c4 v4 s* L" ?3 E - 常量% N# J: I6 H% A: e4 v1 p
- 具体上传文件代码* m" P. H4 k7 Q9 T, G$ @
9 X# {. w0 S" f" w: j+ e
创建共享文件夹参考资料5 t5 A$ |7 l2 k* z _6 I( d. f
! x0 f+ j% o7 D; d8 V% }
上传文件代码
" P9 C- T6 N5 |0 h3 w
' X$ G0 _: |- V5 i' G: w
7 v9 D. Y& i/ |. z* D, `; b8 U' t/ H0 `% r. S
web.config
6 c, M; K, M; p, P8 W' s$ F; G) m 工具方法 & J4 S( `$ T( s8 @, N( g
- public static string GetConfigString(string key, string @default = "") { return ConfigurationManager.AppSettings[key] ?? @default; } /// /// 根据文件名(包含文件扩展名)获取要保存的文件夹名称 /// public class FileHelper { /// /// 根据文件名(包含文件扩展名)获取要保存的文件夹名称 /// /// 文件名(包含文件扩展名) 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; } } /// /// 记录日志帮助类 /// 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在文件末尾添加数据 tw.WriteLine($"----产生时间:{DateTime.Now:yyyy-MM-dd HH:mm:ss}---------------------------------------------------------------------"); tw.WriteLine(data.ToJson()); tw.Close(); } catch (Exception e) { } } }
复制代码 常量
3 d( }% `5 L( d8 @8 |* F7 X- /// /// 文件上传配置项 /// public class FileUploadConst { /// /// 上传地址 /// public static string UploadPath => ConfigHelper.GetConfigString("UploadPath"); /// /// 文件访问/下载地址 /// public static string DownloadPath => ConfigHelper.GetConfigString("DownloadPath"); /// /// 访问共享目录用户名 /// public static string UserName => ConfigHelper.GetConfigString("UserName"); /// /// 访问共享目录密码 /// public static string Password => ConfigHelper.GetConfigString("Password"); }
复制代码 具体上传文件代码
& q. S' ?5 B- ^, D% j. l" W3 o- /// /// 上传文件到共享文件夹 /// [HttpPost, Route("api/Upload/UploadAttachment")] [AllowAnonymous] public ServiceResponse 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 = "链接服务器失败"; } return ServiceResponse.SuccessResponse(msg, viewModel, code); } /// /// 连接远程共享文件夹 /// /// 远程共享文件夹的路径 /// 用户名 /// 密码 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; } /// /// 向远程文件夹保存本地内容,或者从远程文件夹下载文件到本地 /// /// 要保存的文件的路径,如果保存文件到共享文件夹,这个路径就是本地文件路径如:@"D:\1.avi" /// 保存文件的路径,不含名称及扩展名 /// 保存文件的名称以及扩展名 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($"文件不存在,开始保存"); 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 上传文件到共享文件夹的示例的详细内容,更多关于ASP.NET 上传文件的资料请关注脚本之家其它相关文章!
8 _) k, R1 a m" M5 l+ `) p6 n+ R7 n) ~9 b
来源:http://www.jb51.net/article/209483.htm
8 v/ T, ~: G- u' _免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
|