转载地址https://blog.csdn.net/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#的生态什么时候能变好点啊,啊,啊, 啊。。。