python2.7上传中文名文件到企业微信,返回media_id为空

用python上传中文名文件到企业微信
报错:{'errcode': 44001, 'errmsg': 'empty media data, hint: [1549176653_2_aa7212a4ff64b96314b465d5f66a2b3e], more info at https://open.work.weixin.qq.com/devtool/query?e=44001'}

#!/usr/bin/python
#coding=gbk

import urllib,urllib2
import json
import sys
import requests


print sys.getdefaultencoding()

reload(sys)
sys.setdefaultencoding('utf8')

print sys.getdefaultencoding()

def gettoken():
    url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken'
    params = {'corpid':'XXXXXXXXXXXXXXXXXXXX','corpsecret':'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'}
    r = requests.get(url=url, params=params)
    token=json.loads(r.text)['access_token']
    return token

def get_media_ID(path):
    token = gettoken()
    img_url = 'https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token='+token+'&type=file'
    files = {'file': open(path, 'rb')}
    print files
    r = requests.post(img_url, files=files)
    print r.json()
    re = r.json()['media_id']
    return re

def senddata(accesstoken,user,agentid,filename):
    media_id=get_media_ID(filename)
    print media_id
    post_data={
                "touser": user,
                "msgtype": "file",
                "agentid": agentid,
                "file" : {
                         "media_id" : media_id
                },
                "safe":0
    }
    #json_post_data = json.dumps(post_data,False,False)
    json_post_data=json.dumps(post_data, ensure_ascii=False).encode('utf-8')
    send_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token='+accesstoken
    print send_url
    r = requests.post(send_url, data=json_post_data, headers={"Content-Type": "application/json; charset=utf-8"})
    return r.text


if __name__ == '__main__':
    user = "ceshi"
    agentid = "1000020"
    filename = u"测试文件.csv"

    print filename

    accesstoken = gettoken()
    senddata(accesstoken, user, agentid, filename)

推测是编码问题,试了N个方法
网上比较统一的解决方法是改fields.py,也已经改过了

    # value = email.utils.encode_rfc2231(value, 'utf-8')
    # value = '%s*=%s' % (name, value)
    value = '%s="%s"' % (name, value.decode("utf8","ignore"))
0

1个回答

def get_media_ID(path):
token = gettoken()
img_url = 'https://qyapi.weixin.qq.com/cgi-bin/media/upload
files = {'file': open(path, 'rb')}
data={
"access_token":{}.format(token),
"type":"file"
}
r = requests.post(img_url, files=files,data=data)
re = json.loads(r.text)["media_id"]
if not re is None:
return re
else:
return None

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
ftpClient.listFiles()返回值为空的解决方案(上一个传错了)
解决了某些系统中,ftpClient.listFiles()返回值总是为空的问题。 使用方法如下: ftpClient.changeWorkingDirectory(path); ftpClient.enterLocalPassiveMode(); ftpClient.configure(new FTPClientConfig("cn.com.wechat.ftp.UnixFTPEntryParser")); //这里记得改成你放的位置 FTPFile[] fs = ftpClient.listFiles(); // 得到目录的相应文件列表
FTPClient.listFiles()获取文件为空的问题.
ftpClient.changeWorkingDirectory(path); ftpClient.enterLocalPassiveMode(); //由于apache不支持中文语言环境,通过定制类解析中文日期类型 ftpClient.configure(new FTPClientConfig("com.zznode.tnms.ra.c11n.nj.resource.ftp.UnixFTPEntryParser")); FTPFile[] files = ftpClient.listFiles();
微信和企业微信下载与上传资源JAVA代码(https版)
https版的调用微信API上传和下载资源,包含了微信和企业微信
解决ftpClient.listFiles()结果为空的问题
CentOS某些版本中,JAVA代码执行ftpClient.listFiles()有时结果为空。本项目解决了这个问题。具体代码思路可以参考博客:http://blog.csdn.net/yingprince/article/details/51275956
实现判断文件夹是否为空
用vb函数SHFileExists并检查文件是否已存在;查找文件路径是否存在,只能调用api函数PathFileExists;
net(c#)微信自定义菜单开发详细示例
例子主要是叙述了,微信开发中自定义菜单的创建查询以及客户端POST过来的各类信息处理,代码精简,注释清晰,容易理解。 以此例作为参考可以,如果想直接拿下来用,还需要修改一些符合自己业务需求及token等信息。
ImagePicker
当前界面拍照或选择图片
企业微信上传图片修改头像
通过企业微信获取token后,实现上传用户图片文件,并通过后台修改头像。
C# 实现微信企业号的用户发消息和返回消息
(附上说明文档,让大家快速通过回调验证)用C#写的,网上找了很多但是都无法直接使用,也有部分遗漏,正好自己优化一个分享给大家。例子是把用户发送的消息回复给用户,下载后只需在web.config配置好相应的参数,即可发布使用。
C#实现微信企业号回调模式并上传图片到本地服务器
本实例是参考其他网友提供的代码,经过本人综合修改所成,经本人亲测可以正常运行。本实例实现了对文本消息与图片消息的自动回复,并将上传到微信服务器中的图片上传到本地服务器中。希望给苦苦寻找.net代码开发微信企业号的朋友提供一些帮助。
使IIS支持中文文件名
通过注册表方式修改 使iis支持中文文件名 双击加入注册表即可
jsch-0.1.53 使用sftp协议上传下载文件名中文乱码解决办法
jsch-0.1.53 不支持修改编码格式,sftp.setFilenameEncoding("GBK");这样修改是不起作用的,所以必须修改源码。此处是修改源码后重新导出的jar包。
c# 微信接口,包括小程序,企业微信
提供了微信小程序,企业微信开发的接口,适用于C#开发。
bat脚本判断文件夹为空
bat脚本判断文件夹是否为空,使用if先进行文件夹存在判断,在对文件夹是否为空判断。
php实现文件上传并返回获得上传后文件名
php实现文件上传并返回获得上传后生成的文件名。
微信公众平台开发【素材管理】上传临时素材
小易Smalle博文:微信公众平台开发【素材管理】上传临时素材http://blog.csdn.net/oldinaction/article/details/47903989 示例代码
企业微信报警脚本,python2.7环境
企业微信报警脚本,python2.7环境,脚本里面有详细的注释。修改几个参数就可以使用
[jspSmartUpload]------------>jspSmartUpload上传中文文件名 乱码问题
NULL 博文链接:https://lingf.iteye.com/blog/1108467
js 判断文件时候为空
NULL 博文链接:https://yunhuii.iteye.com/blog/1095237
windows系统中解决码云svn文件夹不能为空的问题
现提供windows平台下的EXE文件(电脑需要已安装.net framework4.5),放在项目根目录下运行即可。解决码云svn文件夹不能为空的问题。使用这个小工具,自动检查空文件,并填充或删除.keep文件,设置了排除规则,拓除后的文件夹为空的请手动操作。
common-fileupload实例:fileList = upload.parseRequest(request);上传file文件和form表单提交
fileList = upload.parseRequest(request);上传file文件和form表单提交 common-fileupload实例
微信公众平台上传和下载临时素材
PHP微信公众平台上传和下载临时素材用例,把下载到的文件解压到PHP的根目录,浏览器打开静态(index.html)选择上传的图片,点击上传就可以。适合初学者,界面不是很好,没有进行过多的修饰,但功能比较实用。 注意: 1、需要配置修改好你要上传图片的绝对地址 2、需要修改APPID和AppSecret
js实现上传excel解析返回json到页面显示
js实现excel文件上传解析,返回json并显示到页面 支持两种格式
解决MSDev98\Gallery文件为空的问题
本网站已有的Gallery内文件我也下过了但还是不可用,所以主要原因还是安装不完整的问题,大家可以先重装下,如果还是不行,再下载本资源尝试。。刚上传的有误,请看清大小再下载。。抱歉!
调用企业微信(微信)扫一扫接口
该项目包含调用企业微信的扫一扫接口或微信扫一扫接口,实现直接扫码功能
企业微信发送推送消息完整版
企业微信发送推送消息以及上传媒体文件完整代码及测试,jdk1.6+ecplise
微信企业号回调模式,带消息被动回复
将资源下载中一个哥们的代码加入了消息被动响应的功能,相信大家一看代码就知道,如果不想花积分可以自己整合,相关地址http://blog.csdn.net/k8080880/article/details/40342929 感谢这位大神
带有easy_install功能的python的 Scripts文件夹
带有easy_install功能的python的 Scripts文件夹
python3.6.2 Script 文件夹
python 3.6.2 Script文件夹,内含pip/tensorflow
ftp工具类,修复了获取输入流为空
包含文件上传,文件删除,文件列表,查询当天文件类表方法; 已经填坑,第一个上传的里面获取指定路径下输入流集合会有空对象;此坑已填
判断目录是不是空目录的bat脚本
判断目录当前目录及其之目录是不是空目录的bat脚本,允许环境要在中文版的xp和2003,与大家共享一下,有需要的朋友顶一下,哈哈
Ajaxfileupload 支持多file上传 兼容IE 返回是File为置空问题 及原有的BUG修改 可直接使用
Ajaxfileupload 支持多file上传 兼容IE 返回是File为置空问题 及原有的BUG修改 可直接使用
window_python2.7-Flask上传文件secure_filename识别中文解决办法
window python2.7 Flask上传文件secure_filename识别中文解决办法,只需要将Python27\Lib\site-packages\werkzeug下的utils.py替换掉就可以了,建议替换前保留副本。
企业微信JS-SDK调试工具
企业微信在其客户端内置了一个浏览器,企业微信指定的url只能在企业微信内部打开,否则会显示打开错误的提示; 原理就是让企业微信内置浏览器的agent头跟其他浏览器不一样,而这个文件就是调试工具,相当于给开发者提供了一个调试入口,可以想谷歌等浏览器的F12一样
企业微信api接口实现
企业微信api接口实现 企业微信api接口实现 企业微信api接口实现
多文件上传组件添加了服务器反馈信息事件,可以接收每次上传文件后,服务器返回的文本信息,调用JAVASCRIPT函数
多文件上传组件 temp.html 上传调用实例 update_.swf 上传FLASH文件 update.asp 接收示例 ASP版 update.php 接收示例 php版 详情访问 http://www.access2008.cn/update/ 1.0.2 bate 版 添加了服务器反馈信息事件,可以接收每次上传文件后,服务器返回的文本信息,调用JAVASCRIPT函数 challs_flash_onCompleteData() 添加了Form表单文本域Name属性的设置 修正了若干BUG 1.0.1 bate 版 添加了每个文件上传完成时,调用JAVASCRIPT函数 challs_flash_onComplete() 函数 更新了错误处理系统 修正了部分BUG
利用批处理和Curl命令上传微信媒体素材文件
利用批处理和Curl命令上传微信媒体素材文件,并获取微信返回的MediaID,只要执行文件夹中的批处理文件,便会自动上传当前目录中所有的JPG或Mp3文件,文件类型可以批处理文件中设置。本人研究了上个上午的成果。非常好用!返回微信的MediaID后,有了MediaID,便可以通过微信将素材发给微信用户。有任何技术问题欢迎与我探讨。
SVN提交处理空目录
码云SVN提交处理空目录,自动添加keep。可选择其他默认文件
C# 微信素材上传(永久其他类型素材上传)
提供access_token,文件,文件类型即可完成素材上传。
C#读取导入Excel值为空解决方法
关于在C#中读取导入的Excel一些值为空的解决方法
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 企业微信开发教程 企业微信c#开发教程

相似问题

1
python2.7上传中文名文件到企业微信,返回media_id为空
2
python的serial连接三菱PLC时,为什么不管输入什么都返回95?
1
sublime怎么创建一个文件可以调用别的模组
0
如何将XCOM串口调试调试助手采集到的十六进制激光雷达数据转换为极坐标?
4
python爬取淘宝评论返回内容是登录信息
1
python中剔除csv文件小于某个值的一行数据
0
pydicom解析dcm文件生成数组时运行异常
1
moviepy.editor VideoFileClip(vpath) 报找不到文件
1
不是输入 .csv文件,但是出现 File b'data/data.csv' does not exist错误
1
求助:json标注文件转换成.xml标注文件(深度学习菜菜)
0
python怎么计算殴氏距离(经纬坐标),元数据有59W行,数据为CSV格式(见图),求代码,感谢!
1
用pyinstaller封装同样的python文件,为什么3.6封装的要远远大于3.5封装的?
1
python3 pycharm 调用第三方库 第三方库中文件无法调
1
求助前辈:python使用post请求上传txt文件到网站,上传成功,但是内容为空
1
WIN10利用pyinstaller将Python3.6文件打包成exe程序如何在WIN7上运行
0
如何计算dataframe各列的【标准差/均值】(排除分母-均值为0的情况)
1
求大神帮忙!!!python封装成exe文件疯狂闪退????
1
Python 先执行os.walk 在到目标目录下新建文件,在打印文件信息,为什么包含新增的文件信息
0
求生物信息学中高效去冗余的算法,一个DNA的fasta文件
1
python导入csv文件,csv里数据是字符串不是数值,将如何绘图?