winform里面添加控制器访问
在一个winform 程序里面添加一个控制器,实现图片上传功能
1 使用到的程序集集合

2 实现过程
a 新建一个类 Startup
public class Startup
{
public void Configuration(IAppBuilder appBuilder)
{
System.Web.Http.HttpConfiguration config = new System.Web.Http.HttpConfiguration();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
//静态文件托管
appBuilder.Map("/images", map =>
{
// Configure Web API for self-host. API
// 允许跨域
//map.UseCors(CorsOptions.AllowAll);
map.UseStaticFile(new StaticFileMiddlewareOptions
{
RootDirectory = @".\images",
DefaultFile = "index.html",
EnableETag = true,
EnableHtml5LocationMode = true,
MimeTypeProvider = new MimeTypeProvider(new Dictionary<string, string>
{
{ ".html", "text/html" },
{ ".htm", "text/html" },
{ ".dtd", "text/xml" },
{ ".xml", "text/xml" },
{ ".ico", "image/x-icon" },
{ ".css", "text/css" },
{ ".js", "application/javascript" },
{ ".json", "application/json" },
{ ".jpg", "image/jpeg" },
{ ".png", "image/png" },
{ ".gif", "image/gif" },
{ ".config", "text/xml" },
{ ".woff2", "application/font-woff2"},
{ ".eot", "application/vnd.ms-fontobject" },
{ ".svg", "image/svg+xml" },
{ ".woff", "font/x-woff" },
{ ".txt", "text/plain" },
{ ".map", "text/plain" }
})
});
});
appBuilder.UseWebApi(config);
}
}
2 新建一个类 启动web服务类 C_WebServer
public static void StartWeb(string url)
{
// string baseAddress = "http://192.168.2.157:9000/";
var startOpts = new StartOptions(url);
//如果绑定的是ip地址,请使用管理员运行,否则会出错
WebApp.Start<Startup>(startOpts);
}
3 新建控制器就好了
/// <summary> /// 文件上传 /// </summary> /// <param name="pic"></param> public class FileUploadController : ApiController//ApiController { [HttpGet] public string Test() { return "test"; } /// <summary> /// 上次图片 /// </summary> /// <param name="pic"></param> //[HttpPost] IHttpActionResult [HttpPost] public void Upload() { C_LogManager.ErrorLog("到这里来了----"); try { string m_DesSignature = ""; var sp = new MultipartMemoryStreamProvider(); string path = ""; string name = ""; string url = ""; string extRemak = ""; int fileLength = 0; int operType = 0; string fid=""; bool isSingTrue = false; Task.Run(async () => await Request.Content.ReadAsMultipartAsync(sp)).Wait(); System.Collections.ObjectModel.Collection<HttpContent> list = sp.Contents; foreach (HttpContent item in list) { if (item.Headers.ContentDisposition.FileName != null) { // 获取文件的后缀,方便给文件重命名 var filename = item.Headers.ContentDisposition.FileName.Replace("\"", ""); string exttend = Path.GetExtension(filename); // name = Guid.NewGuid().ToString("N") + exttend; C_LogManager.ErrorLog("扩展名:"+exttend); name = Guid.NewGuid().ToString("N") + ".png"; url = "/images/" + DateTime.Now.ToString("yyyy-MM-dd") + "/" + name; extRemak = url; // 验证后缀{ ".jpg", ".gif", ".bmp",".png" }; 未验证 path = Environment.CurrentDirectory + url; // 这里用的是winfom 做静态文件服务,如果用web做的时候用Server.MapPath(),获取服务器地址 // 上级目录是否存在 DirectoryInfo iDinfo = Directory.GetParent(path); if (iDinfo.Exists == false) { iDinfo.Create(); } url = C_PBSConfigManager.FileUploadURL + url; var ms = item.ReadAsStreamAsync().Result; using (var br = new BinaryReader(ms)) { var data = br.ReadBytes((int)ms.Length); fileLength =(int) ms.Length; File.WriteAllBytes(path, data); // C_LogManager.ErrorLog("保存图片成功=="+url ); } } else { if (item.Headers.ContentDisposition.Name.Replace("\"", "") == @"signature")//签名 { m_DesSignature = item.ReadAsStringAsync().Result; m_DesSignature = C_DESHelper.Decrypt(m_DesSignature); if (m_DesSignature.Length > 0) { string[] arr = m_DesSignature.Split(new char[] { '&' }); operType = int.Parse(arr[2]); fid = arr[1]; DateTime dt = DateTime.Parse(arr[0]); if (dt.AddMinutes(2) < DateTime.Now) { C_LogManager.ErrorLog("当前时间==" + DateTime.Now + "过期时间=" + dt); //return Json(new { status = 500 }); break; } isSingTrue = true; } else { break; } } } } } #endregion } catch (Exception ex) { C_LogManager.ErrorLog("上传图片出现异常" +ex.ToString()+ DateTime.Now ); } } }

浙公网安备 33010602011771号