C# 做微信小程序后台,基本服务器配置 以及 图片上传

C#做微信小程序后台图片上传问题总结
作者参加腾讯高校微信小程序大赛,用C#做后台写接口时遇到诸多问题。包括图片文件上传,如本地与云服务器运行不一致,需在web.config文件添加配置;上传大小受限,需修改IIS配置文件。虽解决了问题,但iis更新会覆盖配置,作者盼C#生态改善。

转载地址https://blog.youkuaiyun.com/weixin_37752503/article/details/81007259
最近参加腾讯的高校微信小程序大赛,用C#做过几个网站,便用C#做后台写接口,在操作的过程中遇到了很多问题。由于C#的生态(C#是最好的语言,不接受反驳),网上资料很少,一边摸索着一边写,还是很艰难的,就先写个总结吧。

一、图片文件上传
1.1基本上传代码
刚开开始做图片上传的时候,前端代码可移步到腾讯小程序的开发文档点击打开链接
前端代码 – 文档里的接口调用

  audioPlay(){
    wx.chooseImage({
      success(res) {
        const tempFilePaths = res.tempFilePaths
        wx.uploadFile({
          url: 'http://*******/api/Values/Get_photo', // 仅为示例,非真实的接口地址
          filePath: tempFilePaths[0],
          name: 'upload',
          formData: {
            user: 'test'
          },
          success(res) {
            console.log('success', res.data,res.statusCode)
            // do something
          },
          fail(res) {
            const data = res.data
            wx.showModal({
              title: 'fail',
              content: 'fail',
            })
            // do something
          },         
        })
      }
    })
    innerAudioContext.play()
  },

后端代码如下:

        [HttpPost]
        public string Get_photo()
        {
            string step = null;
            try
            {
                //之前调试是因为路径下一直没有此目录。
                string path = "/image/"; //路径使用"image\\" 和"/image/"都可以
                HttpPostedFile file = System.Web.HttpContext.Current.Request.Files["upload"];//接收指定文件名文件
                //获取文件
                if (file != null)
                {                   
                    Stream sr = file.InputStream;        //文件流
                    Bitmap bitmap = (Bitmap)Bitmap.FromStream(sr);
                    path += file.FileName;
                    step = path;
                    //~表示 Request.ApplicationPath
                    //获取到的路径为E:\\WGY\\后端学习\\WebAPI_TEST\\UploadImage\\UploadImage
                    string currentpath = System.Web.HttpContext.Current.Server.MapPath("~");
                    step = "saving " + currentpath + path;
                    bitmap.Save(currentpath + path);                   
                }
                return path;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

大致思路就是,获取前端Post的文件“upload”并将图片保存到相对目录“tmp”目录下,并返回保存路径。
1.2本地服务器和云服务器运行不一致的问题

当我在本地服务器上传的时候没有问题,当放在云服务器时一直报错,上传失败。最后,找了各种博客,才知道,C#默认关闭网络服务的功能,就在web.config文件里加了下面的配置就能接收远程的“Get”和“Post”请求了。

<webServices>
      <protocols>
        <add name="HttpGet" />
        <add name="HttpPost" />
      </protocols>
 </webServices>

1.3上传大小的限制
文件上传之后,发现上传的文件只能是40k左右,一度找不到原因。最后,快要提交的时候看了老哥的博客点击打开链接(链接打不开了,大概方法就是打开IIS配置文件进入: C:\Windows\System32\inetsrv\config\schema\IIS_schema 找到name=“uploadReadAheadSize” 注意看它的value值大概就是48xxx多少的换算成KB刚好和限制图片上传的大小近似修改完重启IIS即可 . 如果没有修改权限自行百度搜索教程),解决了问题,原来是自家自带的坑,真感觉到了这个世界对C#开发者的恶意。不过这种形式的改变会存在一个问题,当你的iis更新之后,配置文件会被重新覆盖,一时之间找不到很好的解决方案,先这么填坑吧。
1.4总结
这次开发学到了点东西,因为做图像处理的,所以对图像处理有了一定的了解,C#的生态什么时候能变好点啊,啊,啊, 啊。。。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值