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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8097|回复: 0

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

[复制链接]

23

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2021-7-25 20:50:18 | 显示全部楼层 |阅读模式 来自 中国
目录! w8 K5 T# w" W: R1 a* D- V$ T
$ V' k# Y) k* K( I; Z7 Q" \# m
    0 U: F& t5 T9 L5 I: C# U
  • 上传文件代码, J1 ^4 d! H* O& T6 d) T% h3 g
      ) Z! D7 g0 a4 a7 N7 H3 J8 T
    •   web.config ! E3 O- B' [. v) z
    •   工具方法  
      8 I+ F% d! A8 a* W
    •   常量2 R) }- s  X) w) r$ i
    •   具体上传文件代码
      2 m! `, `- k( ^( A; \- a

    9 V( R; P5 ], M
创建共享文件夹参考资料6 @* c  W. G3 M8 b  {/ c

1 o- p: r9 P. I+ i% _" o# z上传文件代码
' [. D* z2 S3 K$ ^

/ i% n1 [9 }- {
( y7 {% \# |) A  N2 F# {7 q" ?6 n
) \1 Z$ b7 P& ^, f  web.config $ y/ Q" r+ _+ g6 f+ P
  1.                
复制代码
  工具方法  
: \6 }, n9 K! v7 O  G3 N
  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)            {            }        }    }
复制代码
  常量
' Q$ g" N& R2 u7 [
  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");    }
复制代码
  具体上传文件代码5 H4 _8 \2 P0 [1 c- W- D5 ^  U
  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 上传文件的资料请关注脚本之家其它相关文章!
" Q: ^. H+ H6 _2 w. B1 U# i8 b7 c& l2 \" N3 C
来源:http://www.jb51.net/article/209483.htm
* c8 W0 B4 p0 C4 A" _( p( i4 K免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

帖子地址: 

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-7-17 17:50 , Processed in 0.049973 second(s), 23 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2026 Discuz! Team.

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