Python не правильно загружается в php - PullRequest
2 голосов
/ 02 февраля 2011

У меня есть скрипт на python, использующий mechanize для загрузки изображения в скрипт php. Проблема в том, что размер изображения составляет 3000 КБ, но на сервере отображается только 52 КБ.

ЗДЕСЬ ПИТОН:

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>

Ответы [ 2 ]

1 голос
/ 21 мая 2011

Решение состоит в том, чтобы открыть файл в двоичном формате, а не в обычном текстовом режиме. В вашем коде Python замените соответствующую строку на:

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

Простое добавление флага "rb" (чтение двоичного кода) решит вашу проблему. Размер файла был уменьшен, потому что он пытался нормально читать файл и загружал только те символы, которые были в диапазоне простого текста.

Наслаждайтесь.

1 голос
/ 02 февраля 2011

Скорее всего, это настройка PHP ini, ограничивающая размер загружаемого файла ( upload_max_filesize ).

Edit: , чтобы проверить этот параметр, вы можете использовать: echo ini_get('upload_max_filesize');.Если размер составляет 52 КБ, то у вас есть ответ.На самом деле, если размер файла меньше размера файла, который вы хотите загрузить, увеличьте его, потому что это определенно станет проблемой где-то внизу.

...