2011-02-02 13 views
2

私は、phpスクリプトに画像をアップロードするためにmechanizeを使用するpythonスクリプトを持っています。問題は、画像が3,000kbで、サーバー上に52kbしか表示されていないことです。 HEREpythonがphpに正しくアップロードされていない

はPYTHON IS:HERE

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() 

は、WEBページです:

ほとんどの
<?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> 
+1

PHPスクリプトに$ _REQUEST、$ _GET、$ _FILES、$ _POSTの出力を投稿できますか? – schneck

答えて

1

、それはファイルのアップロードサイズ(upload_max_filesize)を制限する設定INI PHPです。

編集:この設定を確認するには、echo ini_get('upload_max_filesize');を使用します。そこに52KBのサイズがあれば、答えがあります。実際には、アップロードしたいファイルのサイズより小さいものなら、それを上げてください。それは間違いなくどこかで問題になるからです。

+0

それは8Mを印刷しました。だから私はそれが問題ではないと推測している? – DonJuma

+0

明らかにPHP内からではありませんが、その目的のために何か(Apache/etc)が残っている可能性があります。先に進んで、@ schneckの助言を受けて、スーパーグローバルの出力からさらに詳しい情報を投稿してください。 $ _FILESは最も関連性の高い情報を持つかもしれません。 – zanlok

+0

どうすればいいですか?私は幾分新しい。 – DonJuma

1

解決策は、ファイルをプレーンテキストモードで開くのではなく、バイナリ形式で開くことです。

br.form.add_file(open("tester.jpg" ,"rb"), 'image/jpeg', "tester.jpg") 

あなたの問題を解決します"rb"フラグ(バイナリ読み)の簡単な追加:あなたのPythonコードでは、との該当する行を置き換えます。 filsizeはファイルを正常に読み込もうとしたために縮小され、ASCII形式のテキスト範囲にある文字のみがアップロードされました。

お楽しみください。

関連する問題