webapi文件上传和下载
文件上传我们可以做上传文件保存到图片与导入数据,下载可以下载多样的文件。
上传:实例是单个文件导入
NopiHelper:地址
①简单的上传图片进行保存,方法跟MVC中的一样
<form name="form1" method="post" enctype="multipart/form-data" action="../api/upload/PostFormData2">
<div>
<label for="caption">Image Caption</label>
<input name="caption" type="text" />
</div>
<div>
<label for="image1">Image File</label>
<input name="image1" type="file" />
</div>
<div>
<input type="submit" value="Submit" />
</div>
</form>
[HttpPost]
public async Task<IHttpActionResult> PostFormData2()
{
IList<string> paths = new List<string>();
var files = HttpContext.Current.Request.Files;
for (int i = ; i < files.Count; i++)
{
HttpPostedFile file = files[];
string filePath = $@"upload/{DateTime.Now.ToString("yyyyMMddssfff")}_{file.FileName}";
DirectoryInfo rootDir2 = Directory.GetParent(AppDomain.CurrentDomain.BaseDirectory);
string path = System.IO.Path.Combine(
rootDir2.FullName, filePath);
var dir = Path.GetDirectoryName(path);
if (!Directory.Exists(dir))
{
Directory.CreateDirectory(dir);
}
file.SaveAs(path);
paths.Add(path);
}
return await Task.FromResult(Ok(new { errcode = , data = paths }));
}
导入数据:这里需要我们Nuget:Npoi
[HttpPost]
public async Task<IHttpActionResult> UploadFile()
{
try
{
//得到上传的文件
HttpPostedFile file = HttpContext.Current.Request.Files[];
//转DataTable
DataTable dt = NopiHelper.ExcelToTable(file.InputStream, , , Path.GetExtension(file.FileName));
//通过DataTable转实体
List<TVideosurveillance> list = NopiHelper.Mapper<TVideosurveillance>(dt);
foreach (TVideosurveillance item in list)
{
TVideosurveillance model = await dbOracle.TVideosurveillances.AsQueryable().FirstAsync(x => x.Dwname == item.Dwname);
if (model == null)
{
model.Dwname = item.Dwname;
model.Dwcode = item.Dwcode;
model.Code = item.Code;
model.Ip = item.Ip;
model.Sbtdmc = item.Sbtdmc;
double[] vs = WGS84Helper.bd09togcj02(item.Coordx.ToDouble(), item.Coordy.ToDouble());
double[] vs2 = WGS84Helper.gcj02towgs84(vs[], vs[]);
model.Coordx = vs2[] + "";
model.Coordy = vs2[] + "";
dbOracle.TVideosurveillances.Insert(model);
}
}
return await Task.FromResult(Ok(new { errcode = , data = "成功" }));
}
catch (Exception ex)
{
return await Task.FromResult(Ok(new { errcode = , data = ex.Message }));
}
}
下载(导出):webapi中需要我们对 HttpResponseMessage 进行设置
/// <summary>
/// 下载只能使用Get方式,需要我们返回 HttpResponseMessage
/// </summary>
/// <returns></returns>
[HttpGet]
public async Task<HttpResponseMessage> Test()
{
DataTable dt = NopiHelper.Mapper<TestA>();
//导出的名字,需要带扩展名 *.xls *.xlsx
string fileName = "测试.xls";
Stream stream = NopiHelper.StreamFromDataTable(dt, fileName);
//设置状态
HttpResponseMessage httpResponseMessage = new HttpResponseMessage(HttpStatusCode.OK);
//内容
httpResponseMessage.Content = new StreamContent(stream);
//类型
httpResponseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.ms-excel");
//响应内容的值,附件形式
httpResponseMessage.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = HttpUtility.UrlEncode(Path.GetFileName(fileName))
};
return await Task.FromResult(httpResponseMessage);
}
MS Excel具有以下观察到的MIME类型:
application/vnd.ms-excel(官方)application/msexcelapplication/x-msexcelapplication/x-ms-excelapplication/x-excelapplication/x-dos_ms_excelapplication/xlsapplication/x-xlsapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet(XLSX)
webapi文件上传和下载的更多相关文章
- WebAPI文件上传与下载
http://www.cnblogs.com/GarsonZhang/p/5511427.html https://github.com/GarsonZhang/FileUpLoadAPI
- java web学习总结(二十四) -------------------Servlet文件上传和下载的实现
在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用 ...
- (转载)JavaWeb学习总结(五十)——文件上传和下载
源地址:http://www.cnblogs.com/xdp-gacl/p/4200090.html 在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传 ...
- JavaWeb学习总结,文件上传和下载
在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用 ...
- java文件上传和下载
简介 文件上传和下载是java web中常见的操作,文件上传主要是将文件通过IO流传放到服务器的某一个特定的文件夹下,而文件下载则是与文件上传相反,将文件从服务器的特定的文件夹下的文件通过IO流下载到 ...
- 使用jsp/servlet简单实现文件上传与下载
使用JSP/Servlet简单实现文件上传与下载 通过学习黑马jsp教学视频,我学会了使用jsp与servlet简单地实现web的文件的上传与下载,首先感谢黑马.好了,下面来简单了解如何通过使用 ...
- JavaWeb学习总结(五十)——文件上传和下载
在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用 ...
- 文件上传和下载(可批量上传)——Spring(三)
在文件上传和下载(可批量上传)——Spring(二)的基础上,发现了文件下载时,只有在Chrome浏览器下文件名正常显示,还有发布到服务器后,不能上传到指定的文件夹目录,如上传20160310.txt ...
- 文件上传和下载(可批量上传)——Spring(二)
针对SpringMVC的文件上传和下载.下载用之前“文件上传和下载——基础(一)”的依然可以,但是上传功能要修改,这是因为springMVC 都为我们封装好成自己的文件对象了,转换的过程就在我们所配置 ...
随机推荐
- Generator函数自执行
Generator函数实现 function* gen(x){ var y = yield x + 2; return y } //1.调用g函数会返回一个内部的指针 var g = gen(1); ...
- arguments 参数
下面要写的是知识梳理的一个案例: 写一个求和的方法sumFn,不管传递的参数有什么,都能将最终的和算出来,并且返回给函数外部使用.(要求:一个参数都不传默认结果为0,对于传递的非正常数字的参数不与累加 ...
- 如何在iview组件中使用jsx
最近选用的框架iview表单组件的render写法让人有点不习惯,尤其是在写比较复杂的逻辑的时候,还是感觉模板式的写法比较方便且可读性较强.而render函数除了支持配置写法外,还支持jsx的写法.由 ...
- 【Win32】对指定进程进行禁音
使用例子如下: CAudioMgr AudioMgr; AudioMgr.SetProcessMute(GetCurrentProcessId()); H文件的内容如下: #pragma once # ...
- Hololens开发笔记:UDP接收数据
Hololens的应用需要与其他设备通信的时候,UDP是比较方便的一种方式,Unity3d 2017.3 C#开发的时候可以用Windows.Networking.Sockets.DatagramSo ...
- android 在非UI线程更新UI仍然成功原因深入剖析
”只能在UI主线程中更新View“. 这句话很熟悉吧? 来来,哥们,看一下下面的例子 @Override protected void onCreate(Bundle savedInsta ...
- ubuntu桌面安装常用软件&及常见问题
自己从windows转向ubuntu桌面开发,根据需求安装以下文件: ubuntu 桌面版下载:http://www.ubuntu.org.cn/download/desktop 有的公司设置静态ip ...
- Azure 中快速搭建 FTPS 服务
FTP,FTPS 与 SFTP 的区别 FTP (File Transfer Protocol)是一种常用的文件传输协议,在日常工作中被广泛应用.不过,FTP 协议使用明文传输.如果文件传输发生在公网 ...
- 规划将 IaaS 资源从经典部署模型迁移到 Azure Resource Manager
尽管 Azure 资源管理器提供了许多精彩功能,但请务必计划迁移,以确保一切顺利进行. 花时间进行规划可确保执行迁移活动时不会遇到问题. Note 以下指导的主要参与者为 Azure 客户顾问团队,以 ...
- 如何检索某个字段在sqlserver中的哪个些存储过程中?很简单的SQL语句。
SELECT obj.Name 存储过程名, sc.TEXT 存储过程内容 FROM syscomments sc INNER JOIN sysobjects obj ON sc.Id = obj.I ...