Die Entwicklung öffentlicher WeChat-Konten umfasst im Allgemeinen die Funktion, lokale Bilder auszuwählen oder Bilder im mobilen öffentlichen Kontoprogramm aufzunehmen und die Bilder auf den lokalen Backend-Server hochzuladen. Die Online-Methode besteht im Allgemeinen darin, die von offiziell bereitgestellte Methode „selectImage“ aufzurufen WeChat und dann feststellen, ob Android oder iOS den WKWebview-Kernel verwenden. Der Rückgabewert wird separat verarbeitet, in Base64-codierte Daten konvertiert und dann auf den Server hochgeladen.
Die Schwierigkeit dieser Methode besteht darin, dass sie das System beurteilen und die von WeChat zurückgegebenen Daten mit Base64 kodieren und dann die Base64-Dekodierungslogik auf der Serverseite schreiben muss lädt es zuerst auf den WeChat-Server und dann auf den Backend-Server hoch, um es vom WeChat-Server herunterzuladen und auf dem Dateiserver zu speichern. Der spezifische Code lautet wie folgt:
1. Die Seite
<input type="button" id="uploadBtn">
hat nur eine Upload-Schaltfläche mit einer normalen Schaltfläche auf der Seite
2 Logik
$('#uploadBtn').click(function () { wx.chooseImage({ count: 1, sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有 sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有 success: function (res) { var localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片 that.uploadImg(localIds[0]); } }); }); //具体上传图片 uploadImg: function (e) { wx.uploadImage({ localId: e, // 需要上传的图片的本地ID,由chooseImage接口获得 isShowProgressTips: 1, // 默认为1,显示进度提示 success: function (res) { serverId = res.serverId; $.ajax({ url: "/uploadImg", dataType: "json", async: false, contentType: "application/x-www-form-urlencoded; charset=UTF-8", data: {"mediaId": serverId}, type: "POST", timeout: 30000, success: function (data, textStatus) { $('#imgUrl').val(data); $.toast('上传成功', 'text'); }, error: function (XMLHttpRequest, textStatus, errorThrown) { $.toast('上传错误,请稍候重试!', 'text'); } }); }, fail: function (error) { $.toast('上传错误,请稍候重试!', 'text'); } }); }
Rufen Sie zuerst die Methode wx.chooseImage auf, um das Bild auszuwählen, und verwenden Sie dann das Ergebnis, um die Methode zum Hochladen von Bildern aufzurufen Die serverseitige Controller-Methode, die wir geschrieben haben, um die mediaId Ajax zu übergeben, wird übermittelt, und der nächste Schritt ist der serverseitige Code.
3. Serverseitige Verarbeitungslogik
/** * 获取临时素材 * * @param mediaId 媒体文件ID * @return 正确返回附件对象,否则返回null * @throws WeixinException */ public Attachment downloadMedia(String mediaId) throws WeixinException { //下载资源 String url = "https://api.weixin.qq.com/cgi-bin/media/get?access_token=" + this.oauthToken.getAccess_token() + "&media_id=" + mediaId; //创建请求对象 HttpsClient http = new HttpsClient(); return http.downloadHttps(url); } 其中Attachment表示下载文件返回值对象,包含的属性有: public class Attachment { private String fileName; private String fullName; private String suffix; private String contentLength; private String contentType; private BufferedInputStream fileStream; private String error; 省略get/set方法 }
Rufen Sie das Attachment-Objekt nach dem Aufruf der downloadMedia-Methode ab, die hauptsächlich den FileStream des BufferedInputStream-Objekts verarbeitet Dateistreams Es gibt viele Möglichkeiten, Dateistreams lokal zu speichern. Der spezifische Code wird hier nicht bereitgestellt. Bisher haben wir erfolgreich Bilder auf den lokalen Server des offiziellen WeChat-Kontos hochgeladen.
Verwandte Empfehlungen:
PHP lädt Bilder auf lokale Serverinstanzfreigabe herunter
Verwenden Sie PHP von Laden Sie Dateien vom WeChat-Server auf den lokalen Server herunter
PHP-Implementierungscode zum Speichern von Remote-Bildern auf dem lokalen Server,_PHP-Tutorial
Das obige ist der detaillierte Inhalt vonDas öffentliche WeChat-Konto der JS-Entwicklung lädt Bilder auf den lokalen Server hoch. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!