gpt4 book ai didi

php - Python POST 文件到 PHP

转载 作者:行者123 更新时间:2023-12-01 05:36:05 25 4
gpt4 key购买 nike

我有一个带有 jQ​​uery 和 jqGrd 的 PHP Web 应用程序;该应用程序的功能之一是能够上传文件(在客户端由 jqGrid 处理)并将内容插入数据库。这一切都有效。我的问题是我还需要提供用于手动(或自动)文件上传的命令行机制。所以我有以下Python代码。代码成功登录到我的 API,我可以在 PHP 中看到我的 POST 数据,但我在处理文件时做了一些错误的事情。

我需要以与通过 Web 界面相同的方式发布文件...这会导致 PHP 的 $_FILES 被填充。不过,我下面的代码 $_FILES 是空的。不确定我错过了什么。

import base64
import cookielib
import getopt
import os
import sys
import urllib
import urllib2
import MultipartPostHandler

...code to process command line args, log into api, get sessionId...

#
# import
#
opener = urllib2.build_opener(MultipartPostHandler.MultipartPostHandler)
headers = {'Cookie': 'PHPSESSID=' + sessionId}

params = {
'action': 'import',
'import': 'api',
'file': sourceFile,
'data': base64.b64encode(open(sourceFile, "rb").read()),
'id': id
}

urllib2.install_opener(urllib2.build_opener(MultipartPostHandler.MultipartPostHandler))
response = urllib2.urlopen(urllib2.Request(api, params, headers))

print response.read()

了解 sourceFile 只是命令行上提供的一个字符串可能很重要;它不是文件本身。我认为这就是问题所在。我正在 params['name'] 中发送文件名字符串,并在 params['data'] 中发送其内容。如何发送文件,就像从 Web 表单交互提交文件并将其放在 params['file'] 中一样?这是我需要做的吗?

===编辑===
除了我导入的模块之外,我无法使用任何模块。感谢您提供其他建议,例如“请求”。

最佳答案

您可能不需要在参数中指定数据,而只需提供一个文件对象即可。尝试一下

params = {
'id':'id',
'file':open(sourceFile, 'rb')
}

关于php - Python POST 文件到 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19034322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com