zoukankan      html  css  js  c++  java
  • .NET企业级应用WebService上传下载文件

    在建立好一个WebService后会有一个自带的

     [WebMethod]//在待会写的所有方法中都要写这个,便于调试
            public string HelloWorld()
            {
                return "Hello World";
            }

    现在可以试一下录入记录

     [WebMethod]
            public UserInfo Login(string userName, string pwd)
            {
                if (userName == "admin" && pwd == "123")
                {
                    return new UserInfo() { UserName="admin",Pwd="",Age=50,Remark="我很帅" };
                }
                else
                {
                    return null;
                }
            }

    在MVC项目中的控制器中调用

    //第一步:添加服务引用
            //实例化服务引用:服务对象以SoapClient
            MyWebServiceSoapClient client = new MyWebServiceSoapClient();
            public ActionResult Index()
            {
                string result = client.HelloWorld();
                Response.Write(result);
                return View();
            }

            [WebMethod]
            public UserInfo Login(string userName, string pwd)
            {
                if (userName == "admin" && pwd == "123")
                {
                    return new UserInfo() { UserName="admin",Pwd="",Age=50,Remark="我很帅" };
                }
                else
                {
                    return null;
                }
            }

    然后可以写简单的文件上传下载

    public class MyWebService : System.Web.Services.WebService
        {
    
            [WebMethod]
            public string HelloWorld()
            {
                return "Hello World";
            }
            /// <summary>
            /// 上传文件
            /// </summary>
            /// <param name="bytes"></param>
            /// <param name="fileName"></param>
            /// <returns></returns>
            [WebMethod]
            public bool FileUpload(byte[] bytes,string fileName)
            {
                try
                {
                    //实例化内存对象MemoryStream,将byte数组装入内存对象
                    MemoryStream memory = new MemoryStream(bytes);
                    //文件保存路径
                    string filePath = Server.MapPath("~/Files/" + fileName);
                    //实例化文件对象
                    FileStream fStream = new FileStream(filePath, FileMode.OpenOrCreate);
                    //将内存对象写入文件对象
                    memory.WriteTo(fStream);
                    //释放对象
                    memory.Close();
                    memory.Dispose();
                    fStream.Close();
                    fStream.Dispose();
                    return true;
                }
                catch (Exception ex)
                {
                    return false;
                }
            }
    
            [WebMethod]
            public byte[] FileDownLoad(string FileName)
            {
                //加载路径
                string filePath = Server.MapPath("~/Files/" + FileName);
                //实例化文件对象,并读取指定的文件
                FileStream fs = File.OpenRead(filePath);
                int b1;
                //实例化内存对象
                System.IO.MemoryStream tempStream = new System.IO.MemoryStream();
                //循环读取文件并将文件转换为byte[]
                while ((b1 = fs.ReadByte()) != -1)
                {
                    tempStream.WriteByte(((byte)b1));
                }
                return tempStream.ToArray();
            }
    
            [WebMethod]
            public List<FileManager> GetFileList()
            {
                //加载路径
                string filePath = Server.MapPath("~/Files/");
                //实例化DirectoryInfo并加载指定路径
                DirectoryInfo directory = new DirectoryInfo(filePath);
                List<FileManager> result = new List<FileManager>();
    
                //便利指定路径下的所有文件夹
                foreach (DirectoryInfo item in directory.GetDirectories())
                {
                    FileManager temp = new FileManager();
                    temp.FileName = item.Name;
                    temp.FilePath = item.FullName;
                    temp.FileType = 1;
                    result.Add(temp);
                }
                //遍历指定路径下的所有文件
                foreach (FileInfo item in directory.GetFiles())
                {
                    FileManager temp2 = new FileManager();
                    temp2.FileName = item.Name;
                    temp2.FilePath = item.FullName;
                    temp2.FileType = 2;
                    result.Add(temp2);
                }
                return result;
            }
        }

    在在MVC项目中的控制器中调用

    public ActionResult FileUpload()
            {
                return View();
            }
    
            [HttpPost]
            public ActionResult FileUpload(HttpPostedFileBase file1)
            {
                Stream fileStream = file1.InputStream;
                byte[] bytes = new byte[fileStream.Length];
                fileStream.Read(bytes, 0, bytes.Length);
                // 设置当前流的位置为流的开始
                fileStream.Seek(0, SeekOrigin.Begin);
                bool result = client.FileUpload(bytes, file1.FileName);
                if (result)
                {
                    Response.Write("文件上传成功!");
                }
                else
                {
                    Response.Write("文件上传失败!");
                }
                return View();
            }
    
            public ActionResult FileDownLoad()
            {
                List<FileManager> result = client.GetFileList().ToList();
                StringBuilder sb = new StringBuilder();
                sb.Append("<ul>");
                foreach (var item in result)
                {
                        sb.Append(string.Format("<li><a href='/Home/FileDownLoad/{0}'>{1}</a></li>", item.FilePath, item.FileName));
                        
                }
                sb.Append("</ul>");
                ViewBag.FileList = sb.ToString();
                return View();
            }
    
            [HttpPost]
            public ActionResult FileDownLoad(FormCollection coll)
            {
                string[] s = { "1", "3" };
                foreach (var item in s)
                {
                    byte[] result = client.FileDownLoad(item);
                    //输出流的编码
                    Response.Charset = "UTF-8";
                    Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
                    //输出类型为流文件
                    Response.ContentType = "application/octet-stream";
    
    
                    Response.AddHeader("Content-Disposition", "attachment; filename=" + "新建文本文档.txt");
                    Response.BinaryWrite(result);
                    Response.Flush();
                    Response.End();
                    
                }
                return new EmptyResult();
            }

    写得不好,可能有错请谅解,有错请指出

  • 相关阅读:
    github
    保存中文文本
    python3与 python2 urllib模块区别
    gitbook 使用粘自csdn
    html基础
    R语言学习笔记之十
    R语言学习笔记之九
    R语言学习笔记之八
    R语言学习笔记之七
    R语言学习笔记之六
  • 原文地址:https://www.cnblogs.com/ZxtIsCnblogs/p/7127517.html
Copyright © 2011-2022 走看看