在建立好一个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