MVC WebApi 图片上传和显示
2016-12-08 15:20
405 查看
1 MVC中显示 内存流 中的图片。(不是图片文件)
创建一个Index用来显示
Action:
cshtml:
重点就是 <img src="GetImg?qrCode=@Model.ListNo" height="136"> 其实他指向了一个action,专门显示图片。
2 WebApi 中上传文件
Action: 我的webapi访问路径是 api/common/UploadFile
cshtml:
3 MVC上传图片:
前台:
后台:
4 Ajax上传图片:
前台:
后台:
创建一个Index用来显示
Action:
public ActionResult Index() { return View(); }
cshtml:
@{ ViewBag.Title = "Index"; } <h2>Index2</h2> <img src="GetImg?qrCode=@Model.ListNo" height="136">
重点就是 <img src="GetImg?qrCode=@Model.ListNo" height="136"> 其实他指向了一个action,专门显示图片。
public ActionResult GetImg(string qrCode) { var q = new MemoryStream();//这里是你的图片 内存流 return File(q.ToArray(), "image/jpeg"); }
2 WebApi 中上传文件
Action: 我的webapi访问路径是 api/common/UploadFile
/// <summary> /// 上传图片 /// </summary> /// <returns></returns> public async Task<HttpResponseMessage> UploadFile() { // 检查是否是 multipart/form-data if (!Request.Content.IsMimeMultipartContent("form-data")) throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); HttpResponseMessage response = null; try { //UploadImgUrl 为绝对路径 var provider = new RenamingMultipartFormDataStreamProvider(UploadImgUrl); var body = await Request.Content.ReadAsMultipartAsync(provider); //获取改写后的文件名(会再次调用GetLocalFileName) //result.data = provider.GetLocalFileName(provider.FileData[0].Headers); //获取改写后的文件名(不会再次调用GetLocalFileName) //result.data = body.FileData[0].LocalFileName.Substring(body.FileData[0].LocalFileName.LastIndexOf('\\')); response = Request.CreateResponse(HttpStatusCode.OK); } catch { throw new HttpResponseException(HttpStatusCode.BadRequest); } return response; }
创建一个 Provider 用于重命名接收到的文件 public class RenamingMultipartFormDataStreamProvider : MultipartFormDataStreamProvider { public RenamingMultipartFormDataStreamProvider(string path) : base(path) { } public override string GetLocalFileName(HttpContentHeaders headers) { var sb = new StringBuilder((headers.ContentDisposition.FileName ?? DateTime.Now.Ticks.ToString()).Replace("\"", "").Trim().Replace(" ", "_")); Array.ForEach(Path.GetInvalidFileNameChars(), invalidChar => sb.Replace(invalidChar, '-')); return sb.ToString(); } }
cshtml:
<form name="form1" method="post" enctype="multipart/form-data" action="/api/common/UploadFile"> <div> <label for="image1">Image File</label> <input name="image1" type="file" /> </div> <div> <input type="submit" value="Submit" /> </div> </form>
3 MVC上传图片:
前台:
@using (Html.BeginForm("Test", "Test", FormMethod.Post, new { enctype = "multipart/form-data" })) { <input name="up1" type="file" /> <input type="submit" value="Submit"/> }
后台:
[ValidateInput(false)] [HttpPost] public ActionResult Test(HttpPostedFileBase up1) { if (up1!=null&&up1.FileName != "") { up1.SaveAs(imgFilePath);//文件保存,imgFilePath:文件路径+文件名 } return View(); }
4 Ajax上传图片:
前台:
<form id="form1"> <input type="file" id="file" name="file"/> <input type="button" value="提交" onclick="sub()" /> </form> <script> function sub() { var formData = new FormData(); formData.append("file", document.getElementById("file").files[0]); $.ajax({ url: "/Test/UploadFile", type: "POST", data: formData, contentType: false, processData: false, success: function (data) { } }); } </script>
后台:
[HttpPost] public ActionResult UploadFile(HttpPostedFileBase file) { return RedirectToAction("Index"); }
相关文章推荐
- .net mvc web api上传图片/文件并重命名
- MVC无刷新上传图片并显示
- Asp.Net Mvc 使用WebUploader 多图片上传
- MVC 通过ajaxSubmit上传图片并显示
- myBatis + SpringMVC上传、下载文件、显示byte图片文件、等比例缩放图片
- ASP.NET MVC实现图片上传、图片预览显示
- MVC 3 文件上传 (此处用于上传图片即使显示)
- Windows Azure 系列-- 使用Azure + Web API实现图片上传
- SpringMVC+Ajax用FormData对象上传页面的图片(文件),并且立马在页面上显示出来
- ASP.NET MVC图片管理(上传,预览与显示)
- 【项目相关】MVC中使用WebUploader进行图片预览上传以及编辑
- MVC应用程序显示上传的图片
- MVC应用程序显示上传的图片
- MVC 4 图片的上传及显示
- WebView加载网页-进度显示-网络上传图片并压缩
- WEB中上传图片即使显示
- MVC应用程序显示上传的图片(续)
- Chrome 显示反盗链图片扩展,WebRequest API应用实例
- 关于web项目中的图片上传、并显示问题
- ASP.NET MVC实现图片上传、图片预览显示