我使用下面的代码通过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。
我缺少什么。
答案 0 :(得分:2)
尝试使用FTP_BINARY而不是FTP_ASCII。如果所有其他方法都失败了,请使用十六进制编辑器打开生成的文件。
答案 1 :(得分:2)
您需要在向其写入内容之后查看文件的开头,并且需要使用二进制上载模式:
$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 :(得分:1)
你告诉ftp将图像读作ascii(文本) 改变它或FTP_BINARY。