![](/img/trans.png)
[英]How to import the Python requests module in a script executed from PHP
[英]python requests module post to php script
我需要将一些.csv文件上传到自签名的https apache服务器中。 我的https服务器正在运行PHP。 我的客户端正在运行python脚本,以将文件发布到https服务器中。 PHP.ini有20M用于upload_file和POST_max_size指令,没有多余的空格。 我需要上传的文件只有4千字节
我的python脚本:
import requests
username = "user"
password = 'password'
myfile = "/full/path/to/myfile.csv"
url = "https://www.mydomain.com/file_upload.php"
files = {'file': open(myfile, 'rb')}
r = requests.post(url, files=files, auth=(username, password), verify=False)
print r.text
print r.status_code
我收到状态码200,但文件不在目标服务器中,我认为错误在我的file_upload.php中
$ _FILES ['userfile'] ['name']是我从HTML表单发布文件时使用的名称,现在不再如此。 我相信由于我对PHP中的$ _FILES变量缺乏理解而错过了一些东西- 当不从表单发布时,文件ID应该是什么样子?
<?php
$uploaddir = '/var/www/html/uploads/';
$uploadfile = $uploaddir . basename($_FILES['file-id']['name']);
move_uploaded_file($_FILES['file-id']['tmp_name'], $uploadfile);
error_log(print_r($_FILES['file-id']['error']), 3, $error_log_file);
?>
我的Apache error.log报告以下PHP通知
[2014年6月5日星期四09:35:19.120760] [:错误] [pid 8030] [客户端xxx.xxx.xxx.xxx:49207] PHP警告:第0行上的多部分/表单数据POST数据缺少边界
[2014年6月5日星期四09:35:19.124625] [:错误] [pid 8030] [客户端xxx.xxx.xxx.xxx:49207] PHP注意:未定义的索引:在/var/www/html/file_upload.php中的文件8号线
[2014年6月5日星期四09:35:19.124673] [:错误] [pid 8030] [客户端xxx.xxx.xxx.xxx:49207] PHP注意:未定义的索引:在/var/www/html/file_upload.php中的文件11行
[2014年6月5日星期四09:35:19.124686] [:错误] [pid 8030] [客户端xxx.xxx.xxx.xxx:49207] PHP注意:未定义的索引:在/var/www/html/file_upload.php中的文件12行
权限我的www文件夹是chown -R www-data.www-data
解决方法如下:
当您想使用python模块上传文件时,请按照以下说明读取文件:
files = {'testname': open(myfile, 'rb')}
现在,在接收PHP文件中,必须按如下方式使用$ _FILES变量:
$uploadfile = $uploaddir . basename($_FILES['testname']['name']);
move_uploaded_file($_FILES['testname']['tmp_name'], $uploadfile);
基本上,$ _FILES索引的名称是在python中读取文件名时所给标签的名称。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.