使用php中的ftp将文件上传到服务器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用php中的ftp将文件上传到服务器相关的知识,希望对你有一定的参考价值。
我试图将图像上传到服务器,但我没有权限访问该文件夹,所以我使用了FTP连接。通过android应用程序,我已经编码图像并将其发送到服务器。在服务器端,我只是解码它并尝试上传它。但我无法上传它。你能帮我解决这个问题吗?
<?php
// Get image string posted from Android App
$base=$_REQUEST['image'];
// Get file name posted from Android App
$filename = $_REQUEST['filename'];
// Decode Image
$binary=base64_decode($base);
header('Content-Type: bitmap; charset=utf-8');
$ftp_server = "";
$ftp_user_name = "";
$ftp_user_pass = "";
$destination_file = "/upload/images/".time().jpg";
$conn_id = ftp_connect($ftp_server);
ftp_pasv($conn_id, true);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
if ((!$conn_id) || (!$login_result)) {
echo "FTP connection has failed!";
echo "Attempted to connect to $ftp_server for user $ftp_user_name";
exit;
} else {
echo "Connected to $ftp_server, for user $ftp_user_name,$conn_id";
}
$upload = ftp_put($conn_id, $destination_file, $binary, FTP_BINARY);
if (!$upload) {
echo "FTP upload has failed! $upload";
} else {
echo "Uploaded $source_file to $ftp_server as $destination_file";
}
ftp_close($conn_id);
?>
答案
函数ftp_put的第三个参数需要一个文件名。您将图像二进制文件作为字符串传递。
海牙的小:
$upload = ftp_put($conn_id, $destination_file, $binary, FTP_BINARY);
至:
$fileName = uniqid().'.jpg';
$filePath = '/tmp/'.$uniqid;
file_put_contents($filePath, $binary);
$upload = ftp_put($conn_id, $destination_file, $filePath, FTP_BINARY);
另一答案
请添加ftp_pasv($ conn_id,true);成功登录后。然后只有这将工作。
以上是关于使用php中的ftp将文件上传到服务器的主要内容,如果未能解决你的问题,请参考以下文章
在 PHP 中创建文件并将其上传到 FTP 服务器而不在本地保存
PHP - 将图像上传到 FTP 目录,然后显示仅从目录上传的图像