安卓app和微信小程序上传小文件是常见的功能,下面我用asp.net写一个接口,并且模拟这个接口只能在验证特定用户身份后才上传文件。然后分别用微信开发者工具写一个微信小程序、Android Studio写一个app,实现上传小文件功能。根据不同开发工具,代码分为三部份,第一个是asp.net接口。
打开或新建一个网站,在“解决方案资源窗口”右键添加一个文件夹,取名upload,用于存放上传的文件,再添加一个类取名UpLoad,它将被封装成JSON用于告诉调用接口者文件是否上传的相关信息。在UpLoad添加几个公有变量。它们分别是:
filename,类型string,如果文件上传成功,会显示存储到服务器的文件名,上传失败则返回空的字符串。
ext,类型string 如果文件上传成功,会显示存储到服务器的文件名扩展名,上传失败则返回空的字符串。
iscorrect,类型bool,文件上传为true,反之为false。
tip 类型string,如果文件上传成功显示“上传成功”,反之显示相应错误信息。代码如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
/// <summary>
///UpLoad 的摘要说明
/// </summary>
public class UpLoad
{
public string filename;
public string ext;
public bool iscorrect;
public string tip;
public UpLoad()
{
//
//TODO: 在此处添加构造函数逻辑
//
filename = "";
ext = "";
iscorrect = true;
tip = "";
}
}
然后我们继续在“解决方案资源窗口”右键添加一个“一般处理程序”(扩展名ashx),此处取名为UploadFileAndLoginHandler。这里必须模拟用户名必须是admin才能上传文件,代码如下
<%@ WebHandler Language="C#" Class="UploadFileAndLoginHandler" %>
using System;
using System.Web;
using System.IO;
using Newtonsoft.Json;
public class UploadFileAndLoginHandler : IHttpHandler {
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
UpLoad XUpload = new UpLoad();
if (context.Request.Params["username"] == null)
{
XUpload.filename = "";
XUpload.ext = "";
XUpload.iscorrect = false;
XUpload.tip = "必须输入用户名";
string result = JsonConvert.SerializeObject(XUpload);
context.Response.Write(result);
return;
}
if (context.Request.Params["username"].ToString() != "admin")
{
XUpload.filename = "";
XUpload.ext = "";
XUpload.iscorrect = false;
XUpload.tip = "用户名不正确";
string result = JsonConvert.SerializeObject(XUpload);
context.Response.Write(result);
return;
}
try
{
if (context.Request.Files.Count > 0)
{
HttpPostedFile file = context.Request.Files["upload_file"];
string filename = Path.GetFileNameWithoutExtension(file.FileName);
string ext = Path.GetExtension(file.FileName);
string newfilename = DateTime.Now.Ticks.ToString() + ext;
string filePath = context.Server.MapPath("upload/") + newfilename;
file.SaveAs(filePath);
XUpload.filename = newfilename;
XUpload.ext = ext;
XUpload.iscorrect = true;
XUpload.tip = "";
// context.Response.Write("Yes");
}
else
{
XUpload.filename = "";
XUpload.ext = "";
XUpload.iscorrect = false