精华内容
下载资源
问答
  • 主要介绍了ASP.net WebAPI 上传图片实例,有需要的朋友可以参考一下
  • WebApi上传图片

    千次阅读 2018-06-25 14:25:22
    /// <... /// 上传图片 /// </summary> /// <returns>成功返回图片URL,失败则返回错误信息</returns> public string Upload() { try ...
      /// <summary>
            /// 上传图片 
            /// </summary>
            /// <returns>成功返回图片URL,失败则返回错误信息</returns>
            [HttpPost]
            public BaseResponse<string> Upload()
            {
                try
                {
                    var content = Request.Content;
                    var tempUploadFiles = "/Upload/TempUploadFiles/";
                    var newFileName = "";
                    string filePath = "";
                    string extname = "";
                    string returnurl = "";
                    var sp = new MultipartMemoryStreamProvider();
                    Task.Run(async () => await Request.Content.ReadAsMultipartAsync(sp)).Wait();
    
    
                    foreach (var item in sp.Contents)
                    {
    
    
                        if (item.Headers.ContentDisposition.FileName != null)
                        {
                            var filename = item.Headers.ContentDisposition.FileName.Replace("\"", "");
                            FileInfo file = new FileInfo(filename);
                            string fileTypes = "gif,jpg,jpeg,png,bmp";
                            if (Array.IndexOf(fileTypes.Split(','), file.Extension.Substring(1).ToLower()) == -1)
                            {
                                throw new ApplicationException("不支持上传文件类型");
                            }
                            //if (file.Length> 5242880)
                            //{
                            //    throw new UserFriendlyException(L("文件过大"));
                            //}
                            extname = filename.Substring(filename.LastIndexOf('.'), (filename.Length - filename.LastIndexOf('.')));
                            newFileName = Guid.NewGuid().ToString().Substring(0, 6) + extname;
    
    
                            string newFilePath = DateTime.Now.ToString("yyyy-MM-dd") + "/";
                            if (!Directory.Exists(HostingEnvironment.MapPath("/") + tempUploadFiles + newFilePath))
                            {
                                Directory.CreateDirectory(HostingEnvironment.MapPath("/") + tempUploadFiles + newFilePath);
                            }
                            filePath = Path.Combine(HostingEnvironment.MapPath("/") + tempUploadFiles + newFilePath, newFileName);
                            returnurl = Path.Combine(tempUploadFiles + newFilePath, newFileName);
                            var ms = item.ReadAsStreamAsync().Result;
                            using (var br = new BinaryReader(ms))
                            {
                                if (ms.Length > 1048576 * 5)
                                {
                                    //throw new UserFriendlyException(L("文件过大"));
                                }
                                var data = br.ReadBytes((int)ms.Length);
                                File.WriteAllBytes(filePath, data);
                            }
                        }
                    }
                    // return returnurl;
                    return new BaseResponse<string> { Success = true, Data = returnurl };
                }
                catch (Exception ex)
                {
                    return new BaseResponse<string> { Success = false, Data = ex.Message, Code = 1 };
                }
            }
            

    在web.config文件的<system.webserver></system.webserver>节点下添加跨域设置

       <httpProtocol>
          <customHeaders>
            <add name="Access-Control-Allow-Origin" value="*" />
            <add name="Access-Control-Max-Age" value="30"/>
            <add name="Access-Control-Allow-Methods" value="GET,POST,OPTIONS"/>
            <add name="Access-Control-Allow-Headers" value="Content-Type, Accept" />
          </customHeaders>
        </httpProtocol>

    展开全文
  • AJAX调用webapi上传图片或文件,并返回刚上传的文件名。废话不多说直接贴代码吧html相关:html>TitlefunctiondoUpload(){varformData=newFormData($("#uploadForm")[0]);$.ajax({url:'/api/upload',type:'post',...

    AJAX调用webapi上传图片或文件,并返回刚上传的文件名。废话不多说直接贴代码吧

    html相关:html>

    Title

    function doUpload() {

    var formData = new FormData($("#uploadForm")[0]);

    $.ajax({

    url: '/api/upload',

    type: 'post',

    data: formData,

    async: false,

    cache: false,

    contentType: false,

    processData: false,

    success: function (returndata) {

    alert(returndata);

    },

    error: function (returndata) {

    alert("报错了");

    console.log(returndata);

    }

    });

    }

    无刷新测试: 

    上传文件: 

    webapi相关:public async Task Post()

    {

    if (!Request.Content.IsMimeMultipartContent())

    {

    throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);

    }

    string uploadFolderPath = HostingEnvironment.MapPath("~/Upload");

    //如果路径不存在,创建路径

    if (!Directory.Exists(uploadFolderPath))

    Directory.CreateDirectory(uploadFolderPath);

    string guid = Guid.NewGuid().ToString().Replace("-","");

    List files = new List();

    var provider = new WithExtensionMultipartFormDataStreamProvider(uploadFolderPath, guid);

    try

    {

    // Read the form data.

    await Request.Content.ReadAsMultipartAsync(provider);

    // This illustrates how to get the file names.

    foreach (var file in provider.FileData)

    {//接收文件

    files.Add(Path.GetFileName(file.LocalFileName));

    }

    }

    catch

    {

    throw;

    }

    return string.Join(",", files);

    }

    其中的WithExtensionMultipartFormDataStreamProvider类:public class WithExtensionMultipartFormDataStreamProvider : MultipartFormDataStreamProvider

    {

    public string guid { get; set; }

    public WithExtensionMultipartFormDataStreamProvider(string rootPath, string guidStr)

    : base(rootPath)

    {

    guid = guidStr;

    }

    public override string GetLocalFileName(System.Net.Http.Headers.HttpContentHeaders headers)

    {

    string extension = !string.IsNullOrWhiteSpace(headers.ContentDisposition.FileName) ? Path.GetExtension(GetValidFileName(headers.ContentDisposition.FileName)) : "";

    return guid + extension;

    }

    private string GetValidFileName(string filePath)

    {

    char[] invalids = System.IO.Path.GetInvalidFileNameChars();

    return String.Join("_", filePath.Split(invalids, StringSplitOptions.RemoveEmptyEntries)).TrimEnd('.');

    }

    }

    效果如下:

    1a10bca352cdcd14e367ab58459a470a.png

    44afdc9da090a90c200beba5212c3fb0.png

    图片与文件被成功上传了:

    eb69bbeba547c7db8916df1816010794.png

    欢迎加群讨论技术,群号:677373950

    展开全文
  • C#ajax调用webapi上传图片、传值 demo 附带图片相似度识别对比
  • ASP.NET WEBAPI上传图片

    2019-10-05 04:30:07
    根据业务需要,工程上需要提供两种上传图片的功能,第一是在PC端进行图片的上传,然后同时需要api端也能共享图片信息。 目前的解决方案是在webapi中增加一个接口,专门做图片上传处理,这样这个接口返回的是上传后...

    根据业务需要,工程上需要提供两种上传图片的功能,第一是在PC端进行图片的上传,然后同时需要api端也能共享图片信息。

    目前的解决方案是在webapi中增加一个接口,专门做图片上传处理,这样这个接口返回的是上传后的图片的路径, 然后API和PC都可以调用。

    话不多说,直接上代码

    using System;
    using System.Web.Http;
    using System.Net.Http;
    using System.Web.Script.Serialization;
    using System.Text;
    using System.Web;
    
    namespace BlackNails.Controllers
    {
        public abstract class WebAPI2BaseController : ApiController
        {
            public HttpContext context = HttpContext.Current;
    
            public static HttpResponseMessage toJson(Object obj)
            {
                String str;
                if (obj is String || obj is Char)
                {
                    str = obj.ToString();
                }
                else
                {
                    JavaScriptSerializer serializer = new JavaScriptSerializer();
                    str = serializer.Serialize(obj);
                }
                HttpResponseMessage result = new HttpResponseMessage { Content = new StringContent(str, Encoding.GetEncoding("UTF-8"), "application/json") };
                return result;
            }
        }
    }

    这里先提供这个基础的API程序

    using BlackNails.Controllers;
    using System;
    using System.Collections;
    using System.Diagnostics;
    using System.IO;
    using System.Net;
    using System.Net.Http;
    using System.Text;
    using System.Threading.Tasks;
    using System.Web;
    using System.Web.Http;
    using System.Web.Http.Cors;
    
    namespace Apps.WebApi.Controllers
    {
        /// <summary>
        /// 上传文件
        /// </summary>
        [EnableCors(origins: "*", headers: "*", methods: "*")]
        public class ImageUploadController : WebAPI2BaseController
        {
    
            #region 上传文件
            /// <summary>
            /// 通过multipart/form-data方式上传文件
            /// </summary>
            /// <returns></returns>
            [HttpPost]
            public async Task<Hashtable> PostFile()
            {
                var strPath = "";
                Hashtable hash = new Hashtable();
                try
                {
                    // 是否请求包含multipart/form-data。
                    if (!Request.Content.IsMimeMultipartContent())
                    {
                        throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
                    }
    
                    string root = HttpContext.Current.Server.MapPath("/upload/");
                    if (!Directory.Exists(HttpContext.Current.Server.MapPath("~/upload/")))
                    {
                        Directory.CreateDirectory(HttpContext.Current.Server.MapPath("~/upload/"));
                    }
    
                    var provider = new MultipartFormDataStreamProvider(root);
    
                    StringBuilder sb = new StringBuilder();
    
                    // 阅读表格数据并返回一个异步任务.
                    await Request.Content.ReadAsMultipartAsync(provider);
    
                    // 如何上传文件到文件名.
                    foreach (var file in provider.FileData)
                    {
                        string orfilename = file.Headers.ContentDisposition.FileName.TrimStart('"').TrimEnd('"');
                        FileInfo fileinfo = new FileInfo(file.LocalFileName);
                        if (fileinfo.Length <= 0)
                        {
                            hash["status"] = -1;
                            hash["msg"] = "上传出错";
                            hash["data"] = strPath;
                        }
                        else
                        {
                            string fileExt = orfilename.Substring(orfilename.LastIndexOf('.'));
                            String ymd = DateTime.Now.ToString("yyyyMMdd", System.Globalization.DateTimeFormatInfo.InvariantInfo);
                            String newFileName = DateTime.Now.ToString("yyyyMMddHHmmss_ffff", System.Globalization.DateTimeFormatInfo.InvariantInfo);
                            if (!Directory.Exists(root + ymd))
                            {
                                Directory.CreateDirectory(root + ymd);
                            }
                            fileinfo.CopyTo(Path.Combine(root, ymd + "\\" + newFileName + fileExt), true);
                            sb.Append("/upload/" + ymd + "/" + newFileName + fileExt);
                            strPath = sb.ToString();
                        }
                        fileinfo.Delete();//删除原文件
                    }
                    hash["status"] = 0;
                    hash["msg"] = "上传成功";
                    hash["data"] = strPath;
                }
                catch (Exception e)
                {
                    hash["status"] = -1;
                    hash["msg"] = "上传出错";
                    hash["data"] = strPath;
                }
                return hash;
            }
            #endregion 上传文件
        }
    }

    这里代码都写注释了。

                    <form class="form-horizontal form-border" id="addMemberForm">
                        <div class="form-group">
                            <label class="col-sm-3 control-label">姓名</label>
                            <div class="col-sm-6">
                                <input type="text" class="form-control" placeholder="姓名" name="memberName">
                            </div>
                        </div>
                        <div class="form-group">
                            <label class="col-sm-3 control-label">头像</label>
                            <div class="col-sm-6">
                                <input type="file" class="form-control" placeholder="头像" name="photo">
                                <button class="btn-success" type="button" id="upload">上传</button>
                            </div>
                        </div>
                            <div class="col-sm-offset-8">
                                <span id="addMemberResult"></span>
                                <input type="button" class="btn btn-success btn-3d" id="addMemberBtn" onclick="indexModule.addMember();" value="添加">
                            </div>
                        </div>
                    </form>
    <script>
    $(document).ready(function() {
    
        $("#upload").click(function() {
            var url = "http://localhost:1593/api/ImageUpload/PostFile";
    
            var formData = new FormData($("#addMemberForm")[0]);
            $.ajax({
                url: url,
                type: 'POST',
                data: formData,
                async: false,
                cache: false,
                contentType: false,
                processData: false,
                success: function(returndata) {
                    console.log(returndata);
                },
                error: function(returndata) {
                    console.log(returndata);
                }
            });
        });
    });
    </script>

    这里是html端调用方法的做法。

    转载于:https://www.cnblogs.com/Rexcnblog/p/6688928.html

    展开全文
  • ajax C# webapi上传图片

    2019-02-25 11:31:00
    html ajax上传图片到服务器 后端采用asp.net webapi 前端有各种现实上传图片的控件,样式可以做的很美观。我这里只用基本的样式做图片上传。 前端代码 <input name="Userfile" id="Userfile" type="file"&...

    html ajax上传图片到服务器 后端采用asp.net webapi

    前端有各种现实上传图片的控件,样式可以做的很美观。我这里只用基本的样式做图片上传。

    前端代码

       <input name="Userfile" id="Userfile" type="file"></span>

    js代码

     var formDate = new FormData();
     var files = $("#Userfile").get(0).files;
      
     formDate.append("Userfile", files[0]);
    //如果有其他参需要一起提交到后台
    formDate.append("location", location);
    
      $.ajax({
                type: "POST",
                url: url,
                contentType: false,
                cache: false,
                processData: false,           
                data: formDate,
                error: function (request) {
                   
                },
                success: function (data) {
                   
                }
            });

    C# webapi代码

            [HttpPost]
            public object Save()
            {
               //图片存储路径
                string path = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "img/";
               //用户提交的数据
                var Data = System.Web.HttpContext.Current.Request.Form;
                string filesrc = string.Empty;
                string src = string.Empty;
               //获取上传的文件
                var httpPostedFile = HttpContext.Current.Request.Files;
                if (httpPostedFile != null && httpPostedFile.Count > 0)
                {
                    var file = httpPostedFile[0];
                    string imgType = Path.GetExtension(file.FileName);
                    //限制文件上传类型
                    if (imgType.Contains(".jpg")|| imgType.Contains(".png")|| imgType.Contains(".bmp"))
                    {
                       string FileName = Guid.NewGuid().ToString() + imgType;
                       filesrc = path + FileName;
                       src = "/images/" + FileName;
                       // 如果目录不存在则要先创建
                       if (!Directory.Exists(uploadPath))
                       {
                          Directory.CreateDirectory(uploadPath);
                       }
    file.SaveAs(filesrc); }
    }
    if (!string.IsNullOrEmpty(src)) { //存储图片路径到数据库 } }

     

    转载于:https://www.cnblogs.com/jiezi/p/10429971.html

    展开全文
  • asp.net webapi 上传图片接口

    千次阅读 2019-10-16 09:01:47
    直接附上代码,作为其他朋友借鉴和自己记录。 /// <... /// 上传文件 /// </summary> /// <param name="request"></param> /// <returns></returns> ...
  • .Net Core WebApi上传图片的两种方式 我这边主要是为了上传图片,话不多说,上代码。 方式一:通过Form表单上传 后端:  /// <summary> /// 上传图片,通过Form表单提交 /// </summary> ///...
  • Asp.Net WebApi上传图片

    2019-03-16 13:53:00
    webapi using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Globalization; using System.IO; using System.Net; using System.Ne...
  • webapi 上传图片问题

    2018-09-19 14:54:54
    调试到 红色区域 不往下执行了,也没有报错,直接跳到前端页面了,是怎么回事? [img=https://img-bbs.csdn.net/upload/201809/19/1537328925_466112.png][/img]
  • 网上有很多jquery上传图片上传文件的插件,但是要不是用特定的后台框架接收,要不就是只能上传图片,不是文件,还有一些其他的问题,所以我才想自己玩玩JS原生态的上传文件 文件倒是能保存到服务器上,但是貌似因为...
  • webapi上传图片的两种方式

    万次阅读 2016-07-05 16:10:56
    ///  /// App上传图片  ///  /// 返回上传图片的相对路径  [HttpPost]  public AppReturn UploadImage()  {  AppReturn rModel = new AppReturn();  //
  • .net core webapi 上传图片

    千次阅读 2018-10-11 17:49:12
    [HttpPost("api/QualificationOne/Upload")] public ActionResult Upload(IFormCollection Files, int EntId, int CrtUser) { try { //var fo...
  • asp.net webapi 上传图片

    2019-09-11 19:02:38
    var provider = new MultipartFormDataStreamProvider(@"F:\\webapi\\UpLoad"); // 接收数据,并保存文件 await Request.Content.ReadAsMultipartAsync(provider); response = Request.CreateResponse...
  • 关于MVC4.0 WebAPI上传图片重命名以及图文结合 MVC4.0 WebAPI上传后的图片默认以字符串bodypart结合Guid来命名,且没有文件后缀,为解决上传图片重命名以及图文结合发布的问题,在实体对象的处理上,可将图片属性...
  • C# webApi上传图片 代码篇

    千次阅读 2018-03-26 18:10:00
    文件大小判断 未选择上传图片 大小为零 } else if (fileinfo.Length > maxSize) { // 文件大小判断 上传文件是否超限制 } else { // string fileExt = orfilename.Substring(orfilename....
  • 192.168.3.2:81/api/Article/Upload:1 Failed to load resource: the server responded with a status of 404 (Not Found) ...webapi提交上传图片,为什么会有这样的页面脚本错误提示,问题在哪呢??
  • [HttpGet] public IHttpActionResult Parse() { var sPath = @"C:\Users\梁斌\source\repos\WebApplication2\WebApplication2\Images\BodyPart_3fcd168b-3849-4dd6-965e-69056890...
  • 我想上传图片到服务器,服务器是用IIS部署的,客户端用的是wpf,现在上传图片速度很慢,给用户体验很差。特别是大图片上传时会上传不了 有什么好的方法来上传图片
  • .net mvc web api上传图片/文件并重命名

    千次阅读 2016-05-30 20:36:23
    欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit...图片链接和图片上传 LaTex数学公式 UML序列图和流程图 离线写博客 导入导出Markdown文件 丰富的快捷键 快捷键 加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
  • MVC4.0 WebAPI上传后的图片默认以字符串bodypart结合Guid来命名,且没有文件后缀,为解决上传图片重命名以及图文结合发布的问题,在实体对象的处理上,可将图片属性定义为byte[]对象,至于图片的重命名,通过重写...
  • 后台代码 /// <summary> /// 上传文件 /// </summary> /// <returns></returns> [HttpPost] public string Uploader() { try ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 53,557
精华内容 21,422
关键字:

webapi上传图片