如何将PostGIS的GeoJSON字符串存入元组用于requests.post的files参数?
解决requests.post的files参数传递GeoJSON字符串的问题
直接构造符合要求的元组结构就能避免字符串被拆分,关键是要明确files参数中每个条目正确的元组格式:
- 每个文件条目需使用三元组嵌套结构:
(接口接收的字段名, (自定义文件名, GeoJSON字符串内容, 内容类型)) - 核心是把GeoJSON字符串放在子元组中,而非直接作为外层元组元素,这样requests会按multipart/form-data规范正确封装内容,不会因字符串内的引号、逗号拆分数据
代码示例
假设你的GeoJSON数据是字符串geojson_str,接口接收的文件字段名为geojson_file,代码如下:
import requests # 从PostGIS获取的GeoJSON字符串 geojson_str = '{"type": "FeatureCollection", "features": [...]}}' # 构造符合要求的files参数 myfiles = { 'geojson_file': ('data.geojson', geojson_str, 'application/geo+json') } # 发送POST请求 response = requests.post(url, files=myfiles)
关键说明
如果直接将GeoJSON字符串作为元组元素传递,requests会误将其解析为文件路径或拆分的参数;而通过子元组指定文件名、内容、类型后,requests会完整保留原始字符串格式,正确完成multipart数据的封装。
内容的提问来源于stack exchange,提问作者GIStrees
相关产品推荐
相关产品推荐

