2010-04-29 149 views
0

我使用下面的代碼通過FTPPHP上傳圖像

$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是創建該文件,並有大小,但該文件我得到上傳圖片不是image.When嘗試打開圖像查看器我得到錯誤。

開關之前到ftp我有這個代碼

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

和工作正常,但現在我必須使用FTP。

我在想什麼。

回答

2

你需要寫的內容之後,以FSEEK到文件的開頭,你需要使用二進制上傳方式:

$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

嘗試使用FTP_BINARY而不是FTP_ASCII。如果一切都失敗了,用十六進制編輯器打開生成的文件。

1

您正在告訴ftp以ascii的形式讀取圖像(文本) 將其更改爲FTP_BINARY。

0

//打開被動模式上,然後它會正常工作

ftp_pasv($conn_id, true);