如何用仅支持PUT/GET/POST的CRBasic数据记录仪上传数据至Google Drive?
可行解决方案
一、优先选择支持简单HTTP PUT的免费云存储
这类服务无需复杂OAuth认证,直接用预签名URL或简单令牌即可上传,完美适配CRBasic的HTTP能力:
- Backblaze B2:在控制台创建存储桶后,生成带密钥的预签名PUT URL(有效期可自定义)。CRBasic只需调用
HTTPPut把数据发送到该URL,无需额外请求头(预签名已包含认证信息)。 - Dropbox:创建Dropbox App并生成永久访问令牌,上传时使用POST请求到
/2/files/upload接口,请求头添加Authorization: Bearer <你的令牌>,同时指定目标文件路径,直接上传原始数据即可。 - Cloudflare R2:和B2类似,生成预签名PUT URL,支持无认证直接上传到指定存储桶。
二、轻量中间层适配Google Drive(如果必须用Drive)
搭一个极简的中转服务,用Cloudflare Workers(免费额度足够)处理CRBasic的请求,再转发到Google Drive API:
- 在Cloudflare Workers创建服务,编写代码:
- 接收CRBasic发来的PUT/POST数据(比如CSV格式)
- 用预先申请的Google服务账号密钥,调用Drive API将数据存入指定文件夹
- 加个自定义请求头(如
X-Auth-Key: <你的密钥>)做简单鉴权,防止非法调用
- CRBasic端只需把数据PUT到Worker的URL,无需处理任何OAuth流程。
三、Google Drive简化上传法(无需高阶语言)
通过Google表单转换为可直接调用的POST接口:
- 创建带文件上传字段的Google表单,获取表单提交URL
- 用浏览器抓包分析表单提交的POST请求结构,将其转换为CRBasic可发送的格式:
- 请求头设置
Content-Type: multipart/form-data - 按multipart格式组装采集的数据作为文件字段值(需参考CRBasic的HTTP指令文档实现组装)
注意:此方法有文件大小限制,且Google表单接口可能变更,稳定性略差。
- 请求头设置
CRBasic代码示例(Backblaze B2预签名URL)
' 定义数据缓冲区,存储采集的传感器数据 Dim DataBuffer As String * 10240 ' 模拟采集到的CSV格式数据 DataBuffer = "Timestamp,Temp,Humidity" & CHR(13) & CHR(10) & "2024-05-20 14:30,26.1,58.7" ' 调用HTTPPut上传到预签名URL HTTPPut "https://f001.backblazeb2.com/file/your-bucket/sensor-data-20240520.csv", DataBuffer, , , "Content-Type: text/csv"
内容的提问来源于stack exchange,提问作者Electronic Ant
相关产品推荐
相关产品推荐

