京东6.18大促主会场领京享红包更优惠

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8090|回复: 0

ASP.NET 上传文件到共享文件夹的示例

[复制链接]

23

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2021-7-25 20:50:18 | 显示全部楼层 |阅读模式 来自 中国
目录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
  1.                
复制代码
  工具方法  & J4 S( `$ T( s8 @, N( g
  1. 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
  1. ///     /// 文件上传配置项    ///     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
  1. ///         /// 上传文件到共享文件夹        ///         [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' _免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

帖子地址: 

梦想之都-俊月星空 优酷自频道欢迎您 http://i.youku.com/zhaojun917
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|梦想之都-俊月星空 ( 粤ICP备18056059号 )|网站地图

GMT+8, 2026-6-19 05:38 , Processed in 0.038196 second(s), 23 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表