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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7991|回复: 0

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

[复制链接]

23

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2021-7-25 20:50:18 | 显示全部楼层 |阅读模式 来自 中国
目录6 x; O; _0 w6 @4 `) p

3 \' K/ T  ?, v/ t
    * y; ~5 i& q5 x# f
  • 上传文件代码0 N/ K5 p9 A7 \2 R9 w8 @
      / G5 n" x& j) K6 j& n: y: @' m
    •   web.config 
        ]: c% M! \# y9 G6 o$ n
    •   工具方法  
      + U% |# a1 s2 x( `1 |$ |
    •   常量
      ; m; p0 g2 Q5 V( u( {4 r+ T
    •   具体上传文件代码5 c2 G/ n0 Y0 l- N9 L0 {/ t

    $ ~7 i3 Q. D7 ~3 b
创建共享文件夹参考资料5 b2 y( Y$ A4 z9 C6 Q  H. F  l

% F  H4 g: Z$ T2 T4 l上传文件代码% Y7 B6 ]) p" w3 l8 Y! H

- L2 E( j' Q' D' c6 R+ _( w5 z+ B5 A5 m7 s

# s# o+ `( U3 L5 j8 \  web.config / ]8 {% q2 w; G
  1.                
复制代码
  工具方法  8 C1 `! J! F) V+ f. G  i
  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)            {            }        }    }
复制代码
  常量
9 A& Y- Z1 f8 U2 K/ _) g1 i4 `
  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");    }
复制代码
  具体上传文件代码6 K; I& C' X/ P! w
  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 上传文件的资料请关注脚本之家其它相关文章!5 ~3 v. U: U' B* O
, [# Q# A9 O) L. [7 E# |5 V% D6 Z
来源:http://www.jb51.net/article/209483.htm
4 D# H2 p+ u3 U" P免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

帖子地址: 

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

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /6 下一条

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

GMT+8, 2025-8-28 15:22 , Processed in 0.038094 second(s), 23 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2025 Discuz! Team.

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