我有一个使用mechanize的python脚本将图像上传到php脚本。问题是图像是3,000kb,但服务器上只显示52kb。
这是PYTHON:
from mechanize import Browser
br = Browser()
br.open("http://www.mattyc.com/up")
br.select_form(name="upper")
br.form.add_file(open("tester.jpg"), 'image/jpeg', "tester.jpg")
br.submit()
这是网页:
<?php
if (move_uploaded_file($_FILES['file']['tmp_name'], $_FILES["file"]["name"])) {
$success_msg = "GOOD";
echo $success_msg;
}else{
echo "ERROR";
}
?>
<html>
<head>
<title>UP</title>
</head>
<body>
<form action="up.php" method="post" enctype="multipart/form-data" name="upper" >
<label for="file">Filename:</label>
<input type="file" name="file" id="file" />
<br />
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>
答案 0 :(得分:1)
最有可能的是,PHP ini设置限制了文件上传大小(upload_max_filesize)。
修改:要检查此设置,您可以使用:echo ini_get('upload_max_filesize');
。如果那里的大小是52KB,那么你有答案。实际上,如果它的大小小于你要上传的文件的大小,那么请提高它,因为这肯定会成为某个问题。
答案 1 :(得分:1)
解决方案是让文件以二进制文件打开,而不是以纯文本模式打开。在您的python代码中,将相关行替换为:
br.form.add_file(open("tester.jpg" ,"rb"), 'image/jpeg', "tester.jpg")
简单添加"rb"
标志(读取二进制)将解决您的问题。 filsize缩小了,因为它试图正常读取文件,并仅上传ascii纯文本范围内的字符。
享受。