.NET企业级应用WebService上传下载文件
在建立好一个WebService后会有一个自带的
[WebMethod]//在待会写的所有方法中都要写这个,便于调试
public string HelloWorld()
{
return "Hello World";
}
现在可以试一下录入记录
[WebMethod]
public UserInfo Login(string userName, string pwd)
{
if (userName == "admin" && pwd == "")
{
return new UserInfo() { UserName="admin",Pwd="",Age=,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()) != -)
{
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 = ;
result.Add(temp);
}
//遍历指定路径下的所有文件
foreach (FileInfo item in directory.GetFiles())
{
FileManager temp2 = new FileManager();
temp2.FileName = item.Name;
temp2.FilePath = item.FullName;
temp2.FileType = ;
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, , bytes.Length);
// 设置当前流的位置为流的开始
fileStream.Seek(, 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 = { "", "" };
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();
}
写得不好,可能有错请谅解,有错请指出
.NET企业级应用WebService上传下载文件的更多相关文章
- java web service 上传下载文件
1.新建动态web工程youmeFileServer,新建包com,里面新建类FileProgress package com; import java.io.FileInputStream; imp ...
- rz和sz上传下载文件工具lrzsz
######################### rz和sz上传下载文件工具lrzsz ####################################################### ...
- linux上很方便的上传下载文件工具rz和sz
linux上很方便的上传下载文件工具rz和sz(本文适合linux入门的朋友) ##########################################################&l ...
- shell通过ftp实现上传/下载文件
直接代码,shell文件名为testFtptool.sh: #!/bin/bash ########################################################## ...
- SFTP远程连接服务器上传下载文件-qt4.8.0-vs2010编译器-项目实例
本项目仅测试远程连接服务器,支持上传,下载文件,更多功能开发请看API自行开发. 环境:win7系统,Qt4.8.0版本,vs2010编译器 qt4.8.0-vs2010编译器项目实例下载地址:CSD ...
- linux下常用FTP命令 上传下载文件【转】
1. 连接ftp服务器 格式:ftp [hostname| ip-address]a)在linux命令行下输入: ftp 192.168.1.1 b)服务器询问你用户名和密码,分别输入用户名和相应密码 ...
- Delphi调用JAVA的WebService上传XML文件(XE10.2+WIN764)
相关资料:1.http://blog.csdn.net/luojianfeng/article/details/512198902.http://blog.csdn.net/avsuper/artic ...
- C#实现http协议支持上传下载文件的GET、POST请求
C#实现http协议支持上传下载文件的GET.POST请求using System; using System.Collections.Generic; using System.Text; usin ...
- HttpClient上传下载文件
HttpClient上传下载文件 java HttpClient Maven依赖 <dependency> <groupId>org.apache.httpcomponents ...
随机推荐
- foreach_and_函数
foreach(对集合每个元素的引用 in 集合){}例: int[] a = new int[5]{1,2,3,4,5,}; foreach(int b in a) { //b就是a中的每个元素 } ...
- apache: apache-tomcat-6.0.35完整下载
Index of /dist/tomcat/tomcat-6/v6.0.35/bin Name Last modified Size Description Parent Directory - ex ...
- bookStore第二篇【图书模块、前台页面】
图书模块 分析 在设计图书管理的时候,我们应该想到:图书和分类是有关系的.一个分类可以对应多本图书. 为什么要这样设计?这样更加人性化,用户在购买书籍的时候,用户能够查看相关分类后的图书,而不是全部图 ...
- Python学习笔记011_模块_标准库_第三方库的安装
容器 -> 数据的封装 函数 -> 语句的封装 类 -> 方法和属性的封装 模块 -> 模块就是程序 , 保存每个.py文件 # 创建了一个hello.py的文件,它的内容如下 ...
- eclipse设置背景保护色及常用设置
1.设置背景颜色 2.代码自动补全 Windows-->Preferences-->Java-->Editor-->Content Asist,在Auto activation ...
- struts1.3整合spring2.5(将spring委托给struts方式)
前提是配置完struts1.3 导包 spring-2.5.6.jar //spring核心包 spring-webmvc-struts-2.5.5.jar //struts整合spring使用 lo ...
- 深入浅出数据结构C语言版(21)——合并排序
在讲解合并排序之前,我们先来想一想这样一个问题如何解决: 有两个数组A和B,它们都已各自按照从小到大的顺序排好了数据,现在我们要把它们合并为一个数组C,且要求C也是按从小到大的顺序排好,请问该怎么做? ...
- AngularJS 路由精分
AngularJS 路由机制是由ngRoute模块提供,它允许我们将视图分解成布局和模板视图,根据url变化动态的将模板视图加载到布局中,从而实现单页面应用的页面跳转功能. AngularJS 路由允 ...
- HIT 1917 Peaceful Commission
这道题题意就是给你n对人,一对中编号为x,x+1,给你m对矛盾,表示这两个人不能同时选. 然后就是Two-Sat的模板题了,就是根据对称性,连边,加缩点,最后拓扑排序,求出一组可行解就可以了. #in ...
- MySQL之多表操作
前言:之前已经针对数据库的单表查询进行了详细的介绍:MySQL之增删改查,然而实际开发中业务逻辑较为复杂,需要对多张表进行操作,现在对多表操作进行介绍. 前提:为方便后面的操作,我们首先创建一个数据库 ...