jssdk 上传图片 java_微信服务号开发之jssdk-照片上传、下载 总结

2023-11-07 15:10

本文主要是介绍jssdk 上传图片 java_微信服务号开发之jssdk-照片上传、下载 总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

**微信服务号开发之jssdk-照片上传、下载 总结**

在做微信服务号商城时有一点开店审核需要开店者在手机微信端上传照片,然后后台浏览以便审核,一开始大概看了一下jssdk文档,然后没有仔细去看,以为和微信支付一样,调用了它的jsp代码就会回调一个照片地址给action,然后存到数据库,后台调用出来查看。后来发现自己错了。因为我一直找不到回调函数怎么写。后来才发现,原来我们上传的东西都是先存放到微信自己的服务器上,他会在jssdk方法的script中给你一个serverId,你可以吧serverId(64位)存到数据库中,然后你在后台利用serverId再通过方法取出来,此方法代码:

````java

package com.util;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import org.apache.http.HttpResponse;

import org.apache.http.client.ClientProtocolException;

import org.apache.http.client.HttpClient;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.impl.client.DefaultHttpClient;

import weixin.popular.api.TokenAPI;

import weixin.popular.bean.Token;

import com.action.WeixinConfig;

public class HttpDownload {

static HttpClient client = new DefaultHttpClient();

/**

* filename

* request.getSession().getServletContext().getRealPath("/图片目录")+"aa.jpg"

*

* @param url 下载地址

* @param filename 保存路径

* @return true下载成功

*/

public boolean download(String url, String filename)

{

try {

HttpGet httpGet = new HttpGet(url);

HttpResponse response = client.execute(httpGet);

if (response.getStatusLine().getStatusCode()==200)

{

InputStream is = response.getEntity().getContent();

OutputStream out = new FileOutputStream(filename);

byte[] b = new byte[1024];

int size = is.read(b);

while (size>0)

{

out.write(b,0,size);

size = is.read(b);

}

out.close();

is.close();

}

httpGet.releaseConnection();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

return false;

}

return true;

}

/*public static void main(String[] args) {

String appid = WeixinConfig.APPID;

String secret = WeixinConfig.APPSECRET;

Token token = new TokenAPI().token(appid, secret);

String access_token = token.getAccess_token();

String media_id = "ZgSqxcH9j_xyxg2Z3Fjtxsr8ypHJ3NBOpWSeszN-Uxc2smtDEXBqOxi0kTjS4cEB";

String url="http://file.api.weixin.qq.com/cgi-bin/media/get?access_token="+access_token+"&media_id="+media_id;

String filename="WebRoot/img/sh82.jpg";

//filename 就是存放照片的地方

boolean b = download(url,filename);

System.out.println("bbb:"+b);

}*/

}

````

jsp中代码:(详见jssdk开发文档)

````

document.querySelector(‘#choose_img’).onclick = function () {

wx.chooseImage({

success: function (res) {

images.localId = res.localIds;

var localIds = res.localIds;

numimg = numimg + images.localId.length;

if(numimg>3)

{

numimg = numimg - images.localId.length;

alert(“只需上传三张照片”);

return;

}

//alert(‘已选择 ’ + res.localIds.length + ’ 张图片’);

var first_item = $(“#choose_img”);

var xxx = null; // 添加图片的盒子 预览

var div = document.getElementById(“goodscontainer”);

for(var i in res.localIds) {

xxx = '

' +

'+%20res.localIds%5Bi%5D%20+%20' +

'

';

var div2 = $(xxx + '');

div2.insertBefore($(first_item));

//div2.appendTo($(div));

}

//上传、

syncUpload(localIds);

}

})

};

var syncUpload = function(localIds){

var localId = localIds.pop();

wx.uploadImage({

localId: localId,

isShowProgressTips: 1,

success: function (res) {

images.serverId = res.serverId; // 返回图片的服务器端ID

$.ajax({

url:"${pageContext.request.contextPath}/paizhao.do?method=getserverId",

data:{serverId:images.serverId},

success:function(data)

{ //alert("ttt");

},

error:function(xhr){

alert(xhr.status);

}

});

if(localIds.length > 0){

syncUpload(localIds);

}

}

});

};

````

这篇关于jssdk 上传图片 java_微信服务号开发之jssdk-照片上传、下载 总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/364460

相关文章

Java Stream流与使用操作指南

《JavaStream流与使用操作指南》Stream不是数据结构,而是一种高级的数据处理工具,允许你以声明式的方式处理数据集合,类似于SQL语句操作数据库,本文给大家介绍JavaStream流与使用... 目录一、什么是stream流二、创建stream流1.单列集合创建stream流2.双列集合创建str

springboot集成easypoi导出word换行处理过程

《springboot集成easypoi导出word换行处理过程》SpringBoot集成Easypoi导出Word时,换行符n失效显示为空格,解决方法包括生成段落或替换模板中n为回车,同时需确... 目录项目场景问题描述解决方案第一种:生成段落的方式第二种:替换模板的情况,换行符替换成回车总结项目场景s

SpringBoot集成redisson实现延时队列教程

《SpringBoot集成redisson实现延时队列教程》文章介绍了使用Redisson实现延迟队列的完整步骤,包括依赖导入、Redis配置、工具类封装、业务枚举定义、执行器实现、Bean创建、消费... 目录1、先给项目导入Redisson依赖2、配置redis3、创建 RedissonConfig 配

SpringBoot中@Value注入静态变量方式

《SpringBoot中@Value注入静态变量方式》SpringBoot中静态变量无法直接用@Value注入,需通过setter方法,@Value(${})从属性文件获取值,@Value(#{})用... 目录项目场景解决方案注解说明1、@Value("${}")使用示例2、@Value("#{}"php

SpringBoot分段处理List集合多线程批量插入数据方式

《SpringBoot分段处理List集合多线程批量插入数据方式》文章介绍如何处理大数据量List批量插入数据库的优化方案:通过拆分List并分配独立线程处理,结合Spring线程池与异步方法提升效率... 目录项目场景解决方案1.实体类2.Mapper3.spring容器注入线程池bejsan对象4.创建

线上Java OOM问题定位与解决方案超详细解析

《线上JavaOOM问题定位与解决方案超详细解析》OOM是JVM抛出的错误,表示内存分配失败,:本文主要介绍线上JavaOOM问题定位与解决方案的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一、OOM问题核心认知1.1 OOM定义与技术定位1.2 OOM常见类型及技术特征二、OOM问题定位工具

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

Python一次性将指定版本所有包上传PyPI镜像解决方案

《Python一次性将指定版本所有包上传PyPI镜像解决方案》本文主要介绍了一个安全、完整、可离线部署的解决方案,用于一次性准备指定Python版本的所有包,然后导出到内网环境,感兴趣的小伙伴可以跟随... 目录为什么需要这个方案完整解决方案1. 项目目录结构2. 创建智能下载脚本3. 创建包清单生成脚本4

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——