上传图片
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript" src="./js/jquery.js"></script>
<style>
.btn {
width: 100%;
height: 40px;
margin-bottom: 20px;
line-height: 40px;
border-radius: 4px solid #ccc;
border: 1px solid #f60;
background-color: #f57e2f;
}
</style>
</head>
<body>
<form id="uploadForm">
<input id="File1" name="media" accept="image/gif, image/jpeg" multiple="multiple" type="file" value="" />
<input id="btnImportOK" type="button" value="上传" />
</form>
<script type="text/javascript">
$(document).ready(function() {
$("#btnImportOK").click(function() {
var formData = new FormData($("#uploadForm")[0]);
console.log(formData);
$.ajax({
type: 'POST',
data: formData,
url: '/material/add',
contentType: false,
processData: false
}).then(function(data) {
console.log(data);
}).fail(function(data) {
alert(data);
})
})
})
</script>
</body>
</html>
上传视频
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript" src="./js/jquery.js"></script>
<style>
.btn {
width: 100%;
height: 40px;
margin-bottom: 20px;
line-height: 40px;
border-radius: 4px solid #ccc;
border: 1px solid #f60;
background-color: #f57e2f;
}
</style>
</head>
<body>
<form id="uploadForm" action="Upload" method="post" enctype="multipart/form-data">
<input id="File1" name="media" multiple="multiple" type="file" value="" />
<input id="btnImportOK" type="button" value="上传" />
</form>
<script type="text/javascript">
$(document).ready(function() {
$("#btnImportOK").click(function() {
var formData = new FormData($("#uploadForm")[0]);
formData.append("description", JSON.stringify(
{"title":"test", "introduction":"test"}
))
$.ajax({
type: 'POST',
data: formData,
url: '/material/add_video',
contentType: false,
processData: false
}).then(function(data) {
console.log(data);
}).fail(function(data) {
alert(data);
})
})
})
</script>
</body>
</html>
koa2 路由端
const router = require('koa-router')()
const utils = require('../../common/utils')
const request = require('request')
const config = require("../../config")
router.prefix('/material');
function addMaterail(accessToken, type, ctx) {
var url = `https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=${accessToken}&type=${type}`
var opts = {
url: url,
method: "post"
}
return new Promise(function(resolve, reject) {
//使用ctx.req管道将ctx.req流导入到request 请求中
ctx.req.pipe(request(opts, function(error, response, body) {
if(error) {
return reject(error);
}
resolve(body)
}))
})
}
router.post("/add", async (ctx, next) => {
var accessToken= await utils.get(config.wechat.token);
var materailRes = await addMaterail(accessToken, "image", ctx);
ctx.body = materailRes;
});
router.post("/add_video", async (ctx, next) => {
var accessToken= await utils.get(config.wechat.token);
var materailRes = await addMaterail(accessToken, "video", ctx);
ctx.body = materailRes;
});
module.exports = router