zoukankan      html  css  js  c++  java
  • .net core 3.1 webapi后端接收钉钉小程序post的文件/图片

    世上本没路;走的人多了,便成了路。

    dd.uploadFile({
      url: '请使用自己服务器地址',
      fileType: 'image',
      fileName: 'file',
      filePath: '...',
      success: (res) => {
        dd.alert({
          content: '上传成功'
        });
      },
    });

    这就是官网上的例子,没有后端的。但是我猜这是用"Form"进行post提交的,那脑补后端可以在post请求的boby里获取这个文件。以下是成功的后端代码:

     /// <summary>
            /// 用户上传头像
            /// </summary>
            /// <param name="formCollection">Boby</param>
            /// <param name="userid">userid</param>
            /// <returns></returns>
            [HttpPost, Route("postPhotoImage")]
            public StatusCodeResult UserPostPhotoImage([FromForm] IFormCollection formCollection, string userid)
            {
                if (formCollection.Files.Count > 0)
                {
                    var emp = JsonConvert.DeserializeObject<EmployeeDTO>(GetEmployeeInfo(userid));
                    string photo_path = @"C:apache-tomcat-7.0.90webappsdefaultemployeesProfilePicture";
                    string photo_file = photo_path + emp.jobnumber + ".jpg";
                    if (System.IO.File.Exists(photo_file))
                        System.IO.File.Delete(photo_file);
                    try
                    {
                        #region 存储文件
                        using (FileStream fs = System.IO.File.Create(photo_file))
                        {
                            var file = formCollection.Files[0];
                            file.CopyTo(fs);
                            int photo_width = 125;
                            int photo_height = 184;
                            Image img = ZoomImage(Image.FromStream(fs), photo_height, photo_width);
                            using (MemoryStream msResult = new MemoryStream())
                            {
                                Image resultImgage = new Bitmap(photo_width, photo_height);
                                Graphics g = Graphics.FromImage(resultImgage);
                                g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
                                g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                                g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                                g.Clear(Color.White);
                                g.DrawImage(img, new RectangleF(0, 0, photo_width, photo_height));
                                resultImgage.Save(msResult, ImageFormat.Png);
                                byte[] buffer = new byte[msResult.Length];
                                msResult.Seek(0, SeekOrigin.Begin);
                                msResult.Read(buffer, 0, buffer.Length);
                                msResult.Close();
                                fs.Write(buffer, 0, buffer.Length);
                            }
                            fs.Flush();
                            Console.WriteLine(Environment.NewLine + "=========================*===========================");
                            Console.WriteLine(DateTime.Now + "->:Upload Photo,FileName:" + fs.Name);
                            Console.WriteLine("=========================*===========================" + Environment.NewLine);
                        }
                        #endregion
                        return Ok();
                    }
                    catch (Exception)
                    {
                        return BadRequest();
                    }
                }
                else
                    return BadRequest();
            }

    大伙需要注意[FromForm]标记,[FromBoby]是获取不到的!

    let debug_domain='http://cquni.vaiwan.com:8771/api/ECard';
    let domain ="http://218.?.?.?:8771/api/ECard";
    let post_url=domain+'/postPhotoImage';
    let photo_path='';
    let current_user='';
    
    Page({
      data: {
         src: ''
      },
      onLoad(query) { 
        current_user=query.userid;
      },
      photoselect(event){  
        let that = this; 
        dd.chooseImage({
          count: 1,
          success: (res) => {
            photo_path=res.filePaths[0];
            that.setData({ 
              src:res.filePaths[0]
            });  
          },
        });
      },
      postimage(event){   
        const file_url = post_url+'?userid='+current_user;  
        if (photo_path==''){
          dd.alert({
            title:'出错啦!',
            content: '请先选取或拍摄照片!预览满意后再提交上传。',
            buttonText:'我晓得了'
          });
          return;
        }
        //dd.alert({content:file_url});
        dd.uploadFile({
              url: file_url,
              fileType: 'image',
              fileName: 'employee_photo',
              filePath: photo_path,
              success: (res) => {
                dd.alert({
                  title:'恭喜',
                  content: '操作成功,头像已上传!',
                  buttonText:'我晓得了'
                });
              },
        });    
      }
    });
  • 相关阅读:
    Node学习之(第二章:http模块)
    Node.js学习(第二章:node核心模块--fs)
    Node.js学习(第一章:Node.js安装和模块化理解)
    Node.js学习(第一章:Node.js简介)
    js控制手机震动
    js发送windows提示信息
    js操作一般文件和csv文件
    js操作indexedDB增删改查示例
    js获取用户实时地理位置
    js处理数值和日期本地化
  • 原文地址:https://www.cnblogs.com/datacool/p/12365105.html
Copyright © 2011-2022 走看看