nodejs WeChatのウェブページapiに画像をアップロードしてアリ雲に転送して保存します.
7012 ワード
最近は前人の残したnodejs WeChatプロジェクトをメンテナンスし始めました.関連書籍を急いで見ました.今はWeChat端末から「JS SDK」を呼び出してマルチメディアファイルのアップロードを実現し、アリークラウドサーバのクラウドストアに転送する必要があります.
背景が必要です
現在のWeChatプロジェクトは画像をアップロードする機能が必要です.展示の端にアリ雲が保存されていますので、雲にアップロードする方法も勉強します.実践に従って、技能の意味をよく把握して、実行します.
アリ雲記憶心得
アリ雲のアカウントはみんな知っています.雲の記憶はみんな「雲の記憶sdk」を押して自分の記憶を作ることができます.ファイルアップロードアプリの説明によると、アリ雲が4つの二つを記憶する必要があります.それぞれ:レギオン:OSSサービスを申請する時のエリア、例えば'oss-cn-hagzhou'です.完全なエリアリストは[OSSサービスノード]で見ることができます. accessKeyId:アリ雲のaccessKeyId accessKeySecret:アリ雲のaccessKeySecret bucketName:作成したbucket名 以上の4つの変数を知ると、私たちは私たちの需要機能を実現することができます.
機能開発
WeChat端末アプリの呼び出しはみんなよく知っているはずです.まず、私達はフロントでWeChatインタフェースを呼び出してファイルをアップロードします.WeChatでアップロードした写真は3日間だけ保存しますので、クラウドに転送します.先端JSコードは以下の通りです.
まず阿里雲保存の構成を行います.4つのパラメータは上記の通りです.
背景が必要です
現在のWeChatプロジェクトは画像をアップロードする機能が必要です.展示の端にアリ雲が保存されていますので、雲にアップロードする方法も勉強します.実践に従って、技能の意味をよく把握して、実行します.
アリ雲記憶心得
アリ雲のアカウントはみんな知っています.雲の記憶はみんな「雲の記憶sdk」を押して自分の記憶を作ることができます.ファイルアップロードアプリの説明によると、アリ雲が4つの二つを記憶する必要があります.それぞれ:
機能開発
WeChat端末アプリの呼び出しはみんなよく知っているはずです.まず、私達はフロントでWeChatインタフェースを呼び出してファイルをアップロードします.WeChatでアップロードした写真は3日間だけ保存しますので、クラウドに転送します.先端JSコードは以下の通りです.
wx.chooseImage({
count: 1, // 9
sizeType: ['compressed'], // ,
//sizeType: ['original'], // ,
sourceType: ['album', 'camera'], // ,
success: function (res) {
var localId = res.localIds[0]; // ID ,localId img src
wx.uploadImage({
localId: localId,
success: function(res) {
var val = "http://file.api.weixin.qq.com/cgi-bin/media/get?access_token="+_accessToken+"&media_id="+res.serverId;// ,_accessToke 7200 token。
$.ajax({
type: "GET",
data: {url: val,userId: _userId,name:'themeImage.jpg',timestamp:_timestamp},//
dataType: 'json',
url: "upload",
beforeSend: function (request) {
request.setRequestHeader('X-CSRF-Token', _csrf);// ajax token,post ,
},
success: function (result) {
$('.cover-pic')
.find('img')
.attr('src', result.url);//
}
});
},
fail: function(res) {
alert(JSON.stringify(res));
}
});
}
});
バックグラウンドのnodejsコードの構想:まずマイクロレターにアップロードされたリモートファイルを取得して、それをストリーミング形式でローカルファイルに保存します.(実はアリクラウドは直接にストリーミング形式でファイルをアップロードすることができます.しかし、私が実践している時はいつも問題があります.成功した人はメッセージを教えてください.ありがとうございます.)またメモリインターフェースを通じてアップロードします.コードは以下の通りです.まず阿里雲保存の構成を行います.4つのパラメータは上記の通りです.
var co = require('co');
var OSS = require('ali-oss');
var client = new OSS({
region: 'your region',
accessKeyId: 'your accessKeyId',
accessKeySecret: 'Your accessKeySecret',
bucket: 'your bucket'
});
転送機能実行コード:var fs = require('fs');
var request = require('request');
app.get('/upload', function (req, res) {
// ,
var userId = req.query.userId;
var timestamp = new Date().getTime();
var name = req.query.name;
var path = 'img_tmp/'+userId+'_'+timestamp+'_'+name;
var key = userId+'/'+timestamp+'/'+name;
// ,
var url = req.query.url;
var stream = request(url).pipe(fs.createWriteStream(path));
//
stream.on('finish', function () {
co(function* () {
var result = yield client.put(key, path);
console.log(result);
res.json(result);
}).catch(function (err) {
console.log(err);
});
});
});
最後に、WeChat公式サイトに画像をアップロードし、アリークラウドに転送する機能を実現しました.皆さんも良い提案を持って、一緒に進歩してください.