You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python脚本向PHP(PostgreSQL)服务器上传图片失败,求解决

问题:Python脚本无法自动上传图片到PHP服务器,数据库无新增数据

我手动通过网页表单能成功将图片存入PostgreSQL数据库,但用Python脚本上传时没有报错,数据库却没新增数据。相关代码如下:

网页表单代码

<html> 
<head> </head> 
<body style="border:2px solid Black; padding: 20px; border-radius: 8px; background-color: Teal;"> 
<center> 
<form action="upload.php" method="post" enctype="multipart/form-data"> 
<input type="file" name="upload" /> 
<br/><br/> 
<input type="submit" name="submit" value="upload"> 
<br/><br> 
<?php echo '<a href = "http://' . $_SERVER['SERVER_NAME'] . '/images/list.php">Return to the Index.</a>'; ?> 
</form> 
</center> 
</body> 
</html>

我的Python代码(无法正常工作)

import requests
url = 'http://12.34.56.78/images/upload.php'
files = {'file': open('The_Great_Archiver.png', 'rb')}
r = requests.post(url, files=files)

PHP上传脚本核心逻辑

<?php include "include/connect.php"; 
if(isset($_POST['submit'])) { 
    // 上传、处理图片及插入数据库的逻辑
} else { 
    echo "Some Error Occurred. Check Code."; 
} 
?>

问题根源与修复方案

你的Python脚本无法触发PHP的上传逻辑,主要有两个关键问题:

  1. 表单字段名不匹配
    PHP脚本里接收文件的字段是upload(对应表单里的<input type="file" name="upload" />),但你的Python代码里用的是file,导致PHP无法识别上传的文件。

  2. 缺少submit触发参数
    PHP脚本开头的if(isset($_POST['submit']))判断,要求请求中必须包含submit字段才会执行上传逻辑。手动提交表单时,这个字段会由提交按钮自动带上,但Python脚本里没有传入这个参数。

修改后的Python代码

import requests

url = 'http://12.34.56.78/images/upload.php'
# 1. 将文件字段名改为`upload`,匹配PHP的接收字段
# 2. 添加`submit`参数,触发PHP的上传逻辑
files = {'upload': open('The_Great_Archiver.png', 'rb')}
data = {'submit': 'upload'}  # 对应表单里提交按钮的value

r = requests.post(url, files=files, data=data)

# 打印响应内容,查看PHP返回的信息,方便调试
print(r.text)

额外调试建议

  • 打印r.text查看PHP返回的具体提示,比如是否有文件类型错误、路径权限问题等;
  • 确保Python脚本中打开的文件路径正确,文件存在且有读取权限;
  • 检查PHP服务器的uploads/和previews/目录是否存在且有写入权限,这会影响文件保存和缩略图生成。

内容的提问来源于stack exchange,提问作者Zephir Lorne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:22:02