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

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

时间: 2024-10-28 20:31:51

.NET企业级应用WebService上传下载文件的相关文章

WebService中实现上传下载文件

不多说,直接看代码: /*上传文件的WebService*/ using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Web; using System.Web.Services; using System.IO; /// <summ

SFTP上传下载文件

secureCRT SFTP上传/下载文件 远程登陆IP secureCRT会话中点击SFTP 3.cd  /home/dowload       linux平台切换到/home/dowload目录 4.cd d:\   windows平台切换到d盘 5.put 文件名           上传 /home/dowload目录下 6.get 文件名   下载文件到windows平台 d盘

Linux上传下载文件

2种方式:xftp(工具).lrzsz xftp:协议--SFTP.端口号--22 lrzsz: rz,sz是Linux/Unix同Windows进行ZModem文件传输的命令行工具. 优点就是不用再开一个sftp工具登录上去上传下载文件. sz(下载):将选定的文件发送(send)到本地机器 rz(上传):运行该命令会弹出一个文件选择窗口,从本地选择文件上传到Linux服务器 安装命令:yum install lrzsz 从服务端发送文件到客户端:sz filename 从客户端上传文件到服务

向云服务器上传下载文件方法汇总(转)

转载于:https://yq.aliyun.com/articles/64700 摘要: 一.向Windows服务器上传下载文件方式 方法有很多种,此处介绍远程桌面的本地资源共享方法. 1.运行mstsc,连接远程桌面的时候,点"选项>>" 2."本地资源"-->详细信息. 3."磁盘驱动器"前面打钩. 一.向Windows服务器上传下载文件方式 方法有很多种,此处介绍远程桌面的本地资源共享方法. 1.运行mstsc,连接远程桌

向linux服务器上传下载文件方式收集

向linux服务器上传下载文件方式收集 1. scp [优点]简单方便,安全可靠:支持限速参数[缺点]不支持排除目录[用法] scp就是secure copy,是用来进行远程文件拷贝的.数据传输使用 ssh,并且和ssh 使用相同的认证方式,提供相同的安全保证 . 命令格式: scp [参数] <源地址(用户名@IP地址或主机名)>:<文件路径> <目的地址(用户名 @IP 地址或主机名)>:<文件路径> 举例: scp /home/work/source.

rz和sz上传下载文件工具lrzsz

######################### rz和sz上传下载文件工具lrzsz ############################################################ 1 rpm -qa |grep lrzsz 如果没有用RPM安装即可: 2 rpm -ivh lrzsz-0.12.20-27.1.el6.x86_64.rpm (去光盘里找) 或者 yum install -y lrzsz 即可. ###########################

python 实现ssh远程执行命令 上传下载文件

使用密码远程执行命令 [[email protected] script]# cat daramiko_ssh.py  #!/usr/bin/env python #_*_coding:utf-8 _*_ __author__ = 'gaogd' import paramiko import sys,os host = sys.argv[1] user = 'root' password = 'ddfasdsasda2015' cmd = sys.argv[2] s = paramiko.SSH

linux下lrzsz安装过程,SecureCRT上传下载文件工具

linux下lrzsz安装过程,SecureCRT上传下载文件工具 1.从下面的地址下载 lrzsz-1.12.20.tar.gz http://down1.chinaunix.net/distfiles/lrzsz-0.12.20.tar.gz 2.查看里面的INSTALL文档了解安装参数说明和细节 3.解压文件 tar zxvf lrzsz-1.12.20.tar.gz 4.进入目录 cd lrzsz-1.12.20 5../configure --prefix=/usr/local/lrz

SFTP上传下载文件、文件夹常用操作

SFTP上传下载文件.文件夹常用操作 1.查看上传下载目录lpwd 2.改变上传和下载的目录(例如D盘):lcd  d:/ 3.查看当前路径pwd 4.下载文件(例如我要将服务器上tomcat的日志文件取出来)进入你要下的文件所在的文件夹:cd /usr/apache-tomcat-6.0.39/logs/下载:get catalina.out 5.上传文件(例如我要上传一个文件到usr目录下)进入你想要上传文件的目录cd /usr上传文件put do.sh 6.上传下载文件夹格式:下载文件夹g