微信小程序端上传图片到服务端项目,微信小程序在真机调试时调用wx.uploadFile提示“fail url not in domain list”时的处理办法
项目文件路径
微信小程序所在路径为 E:\WGY\微信小程序\FaultPatrol 项目下的audio页
服务器后端是在E:\WGY\后端学习\WebAPI_TEST\UploadImage路径下。
微信小程序端上传图片到服务端的一些要点:
1,服务端修改AppStart文件夹下的WebApiConfig.cs文件内的默认路由为
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}", //修改的此处,增加了action
defaults: new { id = RouteParameter.Optional }
);
2,Http接口输出数据的格式修改
参考路径WebApi接口 - 响应输出xml和jsonhttps://www.cnblogs.com/webenh/p/6205582.html
var format = GlobalConfiguration.Configuration.Formatters;
//默认输出方式为xml和json,清除XML则只有json了。清除默认xml
format.XmlFormatter.SupportedMediaTypes.Clear();
//通过参数设置返回格式
format.JsonFormatter.MediaTypeMappings.Add(new QueryStringMapping("t", "json", "application/json"));
format.XmlFormatter.MediaTypeMappings.Add(new QueryStringMapping("t", "xml", "application/xml"));
使用链接后面加?t=xml来设置输出XML格式数据。例如http://*****?t=xml
调用wx.uploadFile提示“fail url not in domain list”是因为我们没有设置域名,或者我们的域名未使用https证书,只能使用http访问。
点击开发工具右上角“详情”
勾选不校验合法域名、web-view、TLS版本以及HTTPS证书
,并且在手机微信扫码真机调试二维码时,出现的调试界面也勾选此项
目前上传图片成功的,但是服务端保存图片到本地时一直出现异常,在ValuesController.cs下的
[HttpPost]
public string Get_photo()
第二天又调试了下,图片保存成功了,是因为指定的目录未创建,见下面代码及其注释
[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;
}
}