2011-02-02 3 views
2

저는 PHP 스크립트에 이미지를 업로드하기 위해 mechanize를 사용하는 파이썬 스크립트가 있습니다. 문제는 이미지가 3,000kb이고 서버에 52kb 만 표시된다는 것입니다.python이 PHP에 올바르게 업로드되지 않았습니다

여기
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> 
+1

PHP 스크립트에 $ _REQUEST, $ _GET, $ _FILES 및 $ _POST의 출력을 게시 할 수 있습니까? – schneck

답변

1

대부분의 경우, 그것은 파일 업로드 크기 (upload_max_filesize)을 제한 PHP의 INI 설정의 여기

파이썬입니다.

편집 :이 설정을 확인하려면 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" 플래그 (바이너리 읽기)의 간단한 추가 : 당신의 파이썬 코드에서와 해당 줄을 교체합니다. filsize는 파일을 정상적으로 읽으려고 시도했기 때문에 축소되었고 ascii 일반 텍스트 범위에있는 문자 만 업로드되었습니다.

즐기십시오.

관련 문제