当前位置:首页 » 文件管理 » webapi图片上传

webapi图片上传

发布时间: 2022-09-24 14:15:20

‘壹’ C# winform程序在局域网下的数据库操作需不需要webService等

你的程序将来有没有可能会放到广域网上运行,如果有这个可能的话,现在可以考虑加入wcf之类的技术做为数据中转接口。如果不考虑这个,仅仅只在局域网内运行,那程序可以直接访问访问数据库(当然,某些特定的功能可能还是需要用到webapi之类的东西,比如说大量的图片上传或浏览)

‘贰’ 如何执行使用webapi HttpClient文件上传多后

HttpClient c = new HttpClient();
var fileContent = new ByteArrayContent(new byte[100]);
fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = "myFilename.txt"
};

var formData = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("name", "ali"),
new KeyValuePair<string, string>("title", "ostad")
});

MultipartContent content = new MultipartContent();
content.Add(formData);
content.Add(fileContent);
c.PostAsync(myUrl, content);

‘叁’ 谁知道演示如何通过 web api 上传文件MVC40

WebApiWebFormHost/UploadFileController.cs/* * 通过 web api 上传文件 */using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; using System.Threading.Tasks; using System.Web.Http; namespace MVC40.Controllers { publicclass UploadFileController : ApiController { publicasync Task<string> Post() { // 检查是否是 multipart/form-dataif (!Request.Content.IsMimeMultipartContent("form-data")) thrownew HttpResponseException(HttpStatusCode.UnsupportedMediaType); // 设置上传目录var provider = new (@"c:\\temp"); // 接收数据,并保存文件var bodyparts = await Request.Content.ReadAsMultipartAsync(provider); string result = ""; // 获取表单数据 result += "formData txtName: " + bodyparts.FormData["txtName"]; result += "<br />"; // 获取文件数据 result += "fileData headers: " + bodyparts.FileData[0].Headers; // 上传文件相关的头信息 result += "<br />"; result += "fileData localFileName: " + bodyparts.FileData[0].LocalFileName; // 文件在服务端的保存地址,需要的话自行 rename 或 movereturn result; } } }WebApiWebFormHost/UploadDemo.cshtml@{ Layout = null; } <!DOCTYPE html><html><head><title>调用web api 上传文件的 demo</title></head><body> @using (Html.BeginForm("UploadFile", "api", FormMethod.Post, new { enctype = "multipart/form-data" })) { <input type="text" id="txtName" name="txtName" value="webabcd"/><div>please select a file</div><input name="data" type="file" multiple /><input type="submit"/> } </body></html>

‘肆’ http://you.video.sina.com.cn/api/sinawebApi/outplayrefer.php/vid=60152363_6/s.s

昨天凌晨4点多,在向阳区东风乡辛庄村的一间出租房内,一名男子持刀劫持房内一名女住户。旭日警方组织警力前去现场,迅速拯救被劫持女子。目前,嫌疑人已被警方刑事扣留。

男邻居凌晨破门而入

事发地点位于辛庄村落最西端一个院子的出租房内,间隔东四环辅路仅多少十米。昨天下战书,记者经由多方探听,才找到事发明场。

事发屋宇正对着小院的大门,面积仅五六平方米。在事发出租屋内,记者见到被劫持的女子王清(化名),她的胳膊、脖子上有创痕。回想起清晨被劫的一幕,王清心惊肉跳。

王清说,她和丈夫陈东(化名)从安徽来京打工,租住在这个面积仅五六平米的出租屋内已经三四年了。陈东在附近做生意,天天凌晨就离家外出了。

昨天凌晨4点多,王清正在睡觉,模糊闻声“咚咚”的敲门声,外面有个男人不断大喊“开门”。王清说,她一开端认为是丈夫回来了,发现不是后,她讯问对方身份,但对方始终不答复,只是使劲地敲门。王清非常畏惧,立即用手机打给丈夫求救,“我挂了电话没多久,外面那男人居然开始撞门”。很快,出租房并不硬朗的木门被该男子撞开。当时天气已蒙蒙亮,王清发现该男子身高约1.8米,不算硬朗,小眼睛,“我这才看出来,他是我们的邻居”。

挥刀请求女住户脱衣

王清随即发现,邻居手里高举着一把菜刀,她急忙藏在床边的角落里哀求:“我这有几百块钱,你都拿走吧。”但这名男街坊并不买账,还要求王清脱衣服,并拿着菜刀胡乱挥动。王清不从,一会儿乞求对方不要损害她,一会儿说乐意把家里的钱都给对方。双方周旋了一会儿,该男子没有硬来,“他嘴里语无伦次地说着什么,我太惧怕了,也没记住”。

随后,王清告知这名男子,她已经给丈夫打了电话,丈夫立刻就会回家。该男子闻听此言,一把将王清从墙角拽从前,一只手抓住王清的两只胳膊,一只手拿着菜刀抵住王清颈部后侧。

丈夫冲入屋内夺菜刀

接到妻子的求救电话后,陈东迅速报警并马上返回家中,50多名民警、特警也迅速赶到。陈东和民警进入院内,要求男子马上放人。民警用手电照向屋内时,男子更加猖狂,一直大喊:“一、二、三,不要照,再照我就杀人!”民警只得先封闭手电筒。

王清归忆道,男子的留神力转向民警时,锐利的菜刀划破了她的颈部,固然伤口不深,但她仍然感到痛苦悲伤难忍,便本能地转身,捉住该男子的手,想把刀抢下来。陈东说,他守在家门口察看屋底细况,民警给该持刀男子做思维工作时,他望到妻子正在跟该男子格斗,便匆忙冲进屋里,Nike Zoom Soldier 2 sale,飞身扑向男子夺刀。民警也随之冲进屋,几名民警敏捷制服男子,夺下他手里的菜刀。

事发地四周居民说,昨天凌晨,多辆未鸣警笛的警车来到院子邻近,数十名民警围住小院内外。约一个小时后,一名男子被两名民警押出院子,钻进警车。居民们说,这期间,现场不很大响动,“还有好多人在睡觉呢,要不是瞅见警车,咱们都不晓得产生了什么事件”。

嫌疑人已被刑事扣押

陈东说,劫持妻子的男子姓王,就住在他们隔壁,双方会晤会打召唤,但简直没有交换,“据说他似乎在附近一个单位当保安,平时话也未几”。王清跟陈东均称,未闻到王某身上有酒味。

警方昨天证明,昨天凌晨4点半左右,警方接到报案称,春风乡辛庄村一出租房内有人持刀将一女子劫持。警方依照预案迅速调集警力赶到现场,4点50分左右,民警将持刀嫌疑人把持。目前,嫌疑人王某(男,27岁,河南淮阳县人)已被向阳警方刑拘,此案正在进一步考察中。

昨天下昼,记者在现场探访时发现,事发地点西侧的小路上安装了监控探头。附近居民说,辛庄村内外来人口较多,虽然村内重要的一些途径上装置有监控探头,村内也有专职保安巡逻,但这种意外事件仍是难以防备。

■讲述

作为丈夫,我应当最先冲上去

陈东说,妻子在电话里说,家门外有个男子撞门,这让他心急如焚,扔下手里的生意就开车往家赶,“我就想着能开多快就多快,巴不得赶快飞回家”。途中,他担忧情形危险,便急忙报警。陈东赶到家附近时,民警也已赶到,他带着民警进入院里,正难看到王某用菜刀抵住妻子的脖子,“那一刻,我害怕极了,心跳得很快,刀在他手里,我怕他乱来”。

为了不让王某的行动失控,陈东和民警在屋外向他喊话,“我认为时光过得特殊慢,一秒钟就像一个小时”。陈东说,他的眼睛一刻不敢分开妻子,看到她和王某拉扯,“想都没想,腿就迈出去了”。陈东说,他第一个冲进了房子,不顾所有地扑向王某,在夺刀进程中,手指头被划了一个小口,“为了我的妻子,不论多危险,我都要冲在最前面”。

本报讯记者张剑 于杰

实习记者曹鹏飞

欢送发表评论我要评论
微博推举 | 本日微博热门(编纂:SN014)
相关的主题文章:

New forces power suppliers Interview Internet vet

留守儿童思母心切单独骑车千里探母

Xianzhengfawei secretary fraud embezzlement, was s

‘伍’ 如何使 WebAPI 自动生成漂亮又实用在线API文档

1.1 SwaggerUI

SwaggerUI 是一个简单的Restful API 测试和文档工具。简单、漂亮、易用(官方demo)。通过读取JSON 配置显示API. 项目本身仅仅也只依赖一些 html,css.js静态文件. 你可以几乎放在任何Web容器上使用。

1.2 Swashbuckle

Swashbuckle 是.NET类库,可以将WebAPI所有开放的控制器方法生成对应SwaggerUI的JSON配置。再通过SwaggerUI 显示出来。类库中已经包含SwaggerUI 。所以不需要额外安装。

2.快速开始

创建项目 OnlineAPI来封装网络音乐服务(示例下载) ,通过API可以搜索、获取音乐的信息和播放连接。

我尽量删除一些我们demo中不会用到的一些文件,使其看上去比较简洁。

WebAPI 安装 Swashbuckle

Install-Package Swashbuckle

代码注释生成文档说明。
Swashbuckle 是通过生成的XML文件来读取注释的,生成 SwaggerUI,JSON 配置中的说明的。
安装时会在项目目录 App_Start 文件夹下生成一个 SwaggerConfig.cs 配置文件,用于配置 SwaggerUI 相关展示行为的。如图:

将配置文件大概99行注释去掉并修改为
c.IncludeXmlComments(GetXmlCommentsPath(thisAssembly.GetName().Name));

并在当前类中添加一个方法

/// <summary>
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
protected static string GetXmlCommentsPath(string name)
{
return string.Format(@"{0}\bin\{1}.XML", AppDomain.CurrentDomain.BaseDirectory, name);
}

紧接着你在此Web项目属性生成选卡中勾选 “XML 文档文件”,编译过程中生成类库的注释文件

添加网络音乐 3个API

访问 http://<youhost>/swagger/ui/index,最终显示效果

我们通过API 测试API 是否成功运行

3.添加自定义HTTP Header

在开发移动端 API时常常需要验证权限,验证参数放在Http请求头中是再好不过了。WebAPI配合过滤器验证权限即可

首先我们需要创建一个 IOperationFilter 接口的类。IOperationFilter
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Http.Description;
using System.Web.Http.Filters;
using Swashbuckle.Swagger;

namespace OnlineAPI.Utility
{
public class HttpHeaderFilter : IOperationFilter
{
public void Apply(Operation operation, SchemaRegistry
schemaRegistry, ApiDescription apiDescription)
{
if (operation.parameters == null) operation.parameters = new
List<Parameter>();
var filterPipeline =
apiDescription.ActionDescriptor.GetFilterPipeline();
//判断是否添加权限过滤器
var isAuthorized = filterPipeline.Select(filterInfo =>
filterInfo.Instance).Any(filter => filter is IAuthorizationFilter);
//判断是否允许匿名方法
var allowAnonymous =
apiDescription.ActionDescriptor.GetCustomAttributes<AllowAnonymousAttribute>().Any();

if (isAuthorized && !allowAnonymous)
{
operation.parameters.Add(new Parameter
{
name = "access-key",
@in = "header",
description = "用户访问Key",
required = false,
type = "string"
});
}
}
}
}

在 SwaggerConfig.cs 的 EnableSwagger 配置匿名方法类添加一行注册代码
c.OperationFilter<HttpHeaderFilter>();

添加Web权限过滤器
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Text;
using System.Web;
using System.Web.Http;
using System.Web.Http.Controllers;
using Newtonsoft.Json;

namespace OnlineAPI.Utility
{
/// <summary>
///
/// </summary>
public class AccessKeyAttribute : AuthorizeAttribute
{
/// <summary>
/// 权限验证
/// </summary>
/// <param name="actionContext"></param>
/// <returns></returns>
protected override bool IsAuthorized(HttpActionContext actionContext)
{
var request = actionContext.Request;
if (request.Headers.Contains("access-key"))
{
var accessKey = request.Headers.GetValues("access-key").SingleOrDefault();
//TODO 验证Key
return accessKey == "123456789";
}
return false;
}

/// <summary>
/// 处理未授权的请求
/// </summary>
/// <param name="actionContext"></param>
protected override void HandleUnauthorizedRequest(HttpActionContext actionContext)
{
var content = JsonConvert.SerializeObject(new {State = HttpStatusCode.Unauthorized});
actionContext.Response = new HttpResponseMessage
{
Content = new StringContent(content, Encoding.UTF8, "application/json"),
StatusCode = HttpStatusCode.Unauthorized
};
}
}
}

在你想要的ApiController 或者是 Action 添加过滤器
[AccessKey]

最终显示效果

4.显示上传文件参数

SwaggerUI 有上传文件的功能和添加自定义HTTP Header 做法类似,只是我们通过特殊的设置来标示API具有上传文件的功能
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http.Description;
using Swashbuckle.Swagger;

namespace OnlineAPI.Utility
{
/// <summary>
///
/// </summary>
public class UploadFilter : IOperationFilter
{

/// <summary>
/// 文件上传
/// </summary>
/// <param name="operation"></param>
/// <param name="schemaRegistry"></param>
/// <param name="apiDescription"></param>
public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
{
if (!string.IsNullOrWhiteSpace(operation.summary) && operation.summary.Contains("upload"))
{
operation.consumes.Add("application/form-data");
operation.parameters.Add(new Parameter
{
name = "file",
@in = "formData",
required = true,
type = "file"
});
}
}
}
}

在 SwaggerConfig.cs 的 EnableSwagger 配置匿名方法类添加一行注册代码
c.OperationFilter<UploadFilter>();

API 文档展示效果

‘陆’ 我使用 .net core webapi 怎么获取图片并存到本地磁盘去

RESTSHARP获取图片资源读取到FILSTREAM,System.File写入本地PATH

‘柒’ C#winform 上传图片到服务器

看看这个是否适合:
C#.Net 上传图片,限制图片大小,检查类型
www.csframework.com/archive/2/arc-2-20110716-1727.htm
这个肯定适合,C# Winform 图片资源上传下载WebApi服务器,好像收费
www.csframework.com/archive/1/arc-1-20171021-2381.htm

‘捌’ 2018年10月微信小程序上传文件的问题webapi方式

必须在微信公众平台填写请求,下载,上传,websocket 域名,必须是SSL加密

热点内容
java中todate 发布:2024-10-09 22:01:49 浏览:851
android短信权限设置 发布:2024-10-09 21:45:43 浏览:847
安卓手机转移数据为什么自动断开 发布:2024-10-09 21:40:52 浏览:86
什么是海关防盗密码锁 发布:2024-10-09 21:32:24 浏览:851
shell脚本的加减 发布:2024-10-09 21:23:23 浏览:397
安卓平板和苹果的平板有什么区别 发布:2024-10-09 20:26:37 浏览:425
上传速度对网速的影响吗 发布:2024-10-09 20:09:38 浏览:562
密码锁芯在哪里能买到 发布:2024-10-09 20:05:33 浏览:452
传奇服务器强行下线是什么意思 发布:2024-10-09 20:05:11 浏览:920
sqljoinas 发布:2024-10-09 19:48:01 浏览:391