php загрузить изображение с проблемой ftp - PullRequest
0 голосов
/ 29 апреля 2010

Я использую код ниже, чтобы загрузить изображение через ftp

$sFile=$ftp_dir."/".$image_name;

$image=$database_row["image"];//image is store in database

$fh = tmpfile();
$fwrite($fh, $image);

$uploadFile = ftp_fput($conn_id, $sFile, $fh, FTP_ASCII); 

fclose($fh);

ftp создает файл и имеет размер, НО файл, который я получаю, не является изображением. При попытке открыть в средстве просмотра изображений я получаю сообщение об ошибке.

До перехода на ftp у меня был этот код

$image=$database_row["image"];//image is store in database
   $file = fopen( "images/".$image_name, "w" );
   fwrite( $file, $image);
   fclose( $file );

и работал нормально, но теперь я должен использовать ftp.

Что мне не хватает.

Ответы [ 4 ]

2 голосов
/ 29 апреля 2010

Вам необходимо перейти к началу файла после записи содержимого в него, и вам нужно использовать режим двоичной загрузки:

$sFile=$ftp_dir."/".$image_name;
$image=$database_row["image"];//image is store in database
$fwrite($fh, $image);
fseek($fh, 0);
$uploadFile = ftp_fput($conn_id, $sFile, $fh, FTP_BINARY); 
fclose($fh);
2 голосов
/ 29 апреля 2010

Попробуйте использовать FTP_BINARY вместо FTP_ASCII. Если ничего не помогает, откройте полученный файл с помощью шестнадцатеричного редактора.

1 голос
/ 29 апреля 2010

вы говорите ftp прочитать изображение как ascii (текст) измените его с FTP_BINARY.

0 голосов
/ 08 мая 2017

// включаем пассивный режим, тогда он будет работать нормально

  ftp_pasv($conn_id, true);
...