[英]Why the image is getting corrupted uploaded to the FTP server using PHP?
I'm uploading image to the FTP server at specific folder location. 我正在将图像上传到特定文件夹位置的FTP服务器。 The code is working fine.
代码工作正常。 But when I look at the uploaded image, I got corrupted image file which can't be opened.
但是当我查看上传的图像时,我得到了无法打开的损坏的图像文件。 For few image files the image in a file gets corrupted.
对于少数图像文件,文件中的图像被破坏。 I'm not understanding why this is happening.
我不明白为什么会这样。
Following is the workable code that I tried: 以下是我尝试的可行代码:
if(!empty($_FILES['student_image']['name'])) {
$ext = pathinfo($_FILES['student_image']['name'], PATHINFO_EXTENSION);
$student_image_name = 'student_'.$student_data['student_id'].'.'.$ext;
$ftp_server="56.215.30.91";
$ftp_user_name="myservercreds";
$ftp_user_pass="MyServerCreds";
$file = $_FILES['student_image']['tmp_name'];//file to be uploaded to FTP server
$remote_file = "/Students/".$student_image_name;
// set up basic connection
$conn_id = ftp_connect($ftp_server);
// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
if($login_result) {
if(!is_dir('ftp://myservercreds:MyServerCreds@56.215.30.91/Students')) {
ftp_mkdir($conn_id, "/Students");
ftp_chmod($conn_id, 0777, '/Students');
}
if(!file_exists("/Students/".$student_image_name))
$file_upload_status = ftp_put($conn_id, $remote_file, $file, FTP_ASCII);
}
// close the connection
ftp_close($conn_id);
}
I'm not understanding when does the image file is getting corrupt while uploading to the FTP server of after finishing the upload. 我不知道在完成上传后上传到FTP服务器时图像文件何时被破坏。
You should set the mode with ftp_put
to be FTP_BINARY
: 您应该将模式设置为
ftp_put
为FTP_BINARY
:
ftp_put($conn_id, $remote_file, $file, FTP_BINARY);
This is mandatory since ASCII
mode checks whether the line endings differ on client/server (your case, since you are likely on windows and the server runs unix) and tries to convert them ( \\r\\n
⇒ \\n
). 这是强制性的,因为
ASCII
模式检查客户端/服务器上的行结尾是否不同(您的情况,因为您很可能在Windows上并且服务器运行unix)并尝试转换它们( \\r\\n
n⇒ \\n
)。 In BINARY
mode files are being sent as is. 在
BINARY
模式下,文件按原样发送。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.