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();
            }

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

  • 相关阅读:
    linux常用命令
    mysql 开发基础系列20 事务控制和锁定语句(上)
    sql server 性能调优之 资源等待 CXPACKET
    mysql 开发基础系列19 触发器
    mysql 开发基础系列18 存储过程和函数(下)
    mysql 开发基础系列17 存储过程和函数(上)
    sql server 性能调优之 资源等待PAGEIOLATCH
    mysql 开发基础系列16 视图
    mysql 开发基础系列15 索引的设计和使用
    sql server 性能调优之 当前用户请求分析 (1)
  • 原文地址:https://www.cnblogs.com/ZxtIsCnblogs/p/7127517.html
Copyright © 2011-2022 走看看