PHP - ошибка загрузки большого файла - PullRequest
0 голосов
/ 07 ноября 2011

Я посылаю из настольного приложения AIR изображение вместе с текстом в виде строки в кодировке Base64.Если размер изображения составляет около 100 КБ, загрузка работает, но если она больше ~ 220 КБ, через некоторое время возвращается ошибка.

Ошибка сообщает http://www.example.com/upload.php - Ошибка при открытии URL , но URL-адрес правильный и его можно найти.

Что не так с моимPHP?

<?php
$file         = $_POST["thefile"];         
$text_message = $_POST["themessage"];       
$subject      = $_POST["thesubject"];        
$from         = $_POST["thesender"];        
$to           = $_POST["theaddress"];                 

    $attachment=uniqid(rand(), true) . '.png';

   $headers="From: $from\r\n";
    $headers.="Reply-to: $from\r\n";
    $headers.="Return-Path: $from\r\n";

    if (isset($_ENV["SERVER_NAME"])) 
        $headers.="Message-Id: <" . md5(uniqid(microtime())) . "@" . $_ENV["SERVER_NAME"] . ">\r\n";
    else
        $headers.="Message-Id: <" . md5(uniqid(microtime())) . "@" . 'unknown' . ">\r\n";
    $headers.="Date: " . date("r") . "\r\n";
    $headers.="X-Mailer: PHP\r\n";
    if (isset($_ENV["REMOTE_ADDR"])) 
        $headers.="X-SenderIP: " . $_ENV["REMOTE_ADDR"] . "\r\n";
    else
        $headers.="X-SenderIP: " . 'unknown' . "\r\n";
    if (isset($_ENV["SERVER_NAME"])) 
        $headers.="X-WebSite: " . $_ENV["SERVER_NAME"] . "\r\n";
    else
        $headers.="X-WebSite: " . 'unknown' . "\r\n";
    $headers.="X-Script: SWF_Generator\r\n";
    $bound_text=md5(uniqid(time()));

        $headers.="MIME-Version: 1.0\r\n" . "Content-Type: multipart/mixed; boundary=\"PHP-mixed-$bound_text\"\r\n";
        $message="--PHP-mixed-$bound_text\r\n"      
                ."Content-Type: text/html; charset=\"utf-8\"\r\n"
                ."Content-Transfer-Encoding: 7bit\r\n\r\n"  
                ."<html><head></head><body>"
                ."<div style=\"font-family: Arial, Helvetica, sans-serif; font-size : 1.3em; color: #000000;width: 100%;text-align: left;\">$text_message</div></body></html>\r\n\r\n"  
                ."--PHP-mixed-$bound_text\r\n"  
                ."Content-Transfer-Encoding: base64\r\n"
                ."Content-Disposition: attachment; filename=\"$attachment\"\r\n"
                ."Content-Type: image/png; name=\"$attachment\"\r\n\r\n"
        .chunk_split($file)
        ."\r\n\r\n"
                ."--PHP-mixed-$bound_text--\r\n\r\n";

  mail($to,$subject,$message,$headers);
}
?>

Информация о сервере:

PHP Version 5.2.12-nmm2 System  

 Debug Build:   no  
Thread Safety:  disabled  
Zend Memory Manager:    enabled

Registered PHP Streams:     https, ftps,
 compress.zlib, compress.bzip2, php, file, data, http, ftp, zip 
 Registered Stream Socket Transports:   tcp, udp, unix, udg, ssl, sslv3,
 sslv2, tls  
Registered Stream Filters:  zlib.*, bzip2.*,
 convert.iconv.*, string.rot13, string.toupper, string.tolower,
 string.strip_tags, convert.*, consumed

Ответы [ 2 ]

1 голос
/ 07 ноября 2011

проверьте upload_max_filesize и post_max_size из phpinfo ().Они обычно в мегабайтах, но все равно проверяют.post_max_size должен быть в два раза больше самого большого загруженного файла.

Проверьте журналы сервера на наличие ошибки php.

0 голосов
/ 07 ноября 2011

Может быть, вам следует использовать amfphp или отправить данные методом записи? Ваш путь с Base64 определенно медленнее и требует серверной обработки, вы можете избежать этого.

ссылка на метод публикации: http://www.neerfri.com/2007/12/flex-multipartform-data-post-request.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...