ftp_put (): при добавлении изображения на отдельный сервер оно также добавляется на локальный сервер - PullRequest
0 голосов
/ 07 июня 2011

Это ваша ежедневная загрузка и обрезка вашего скрипта / функции. Кто-то просматривает свой компьютер и загружает изображение. Затем это изображение загружается на отдельный сервер. После этого это же изображение вызывается для их «обрезки», а затем сохранения этой новой версии и удаления старого увеличенного изображения. У меня все это работает хорошо, кроме одной маленькой детали ...

После сохранения обрезанной версии она также сохраняется на локальном сервере в главном каталоге. Я не могу понять, почему он это делает, поскольку он специально настроен для загрузки только на другой.

Вот информация:

$upload_dir = "profile_images/". $username;         // The directory for the images to be saved in
$upload_path = $upload_dir."/";             // The path to where the image will be saved
$large_image_name = "resized_pic.jpg";      // New name of the large image
$thumb_image_name = $userid ."00". $i .".jpg";  // New name of the thumbnail image
$max_file = "200000";                       // Approx 200kb
$max_width = "500";                         // Max width allowed for the large image
$thumb_width = "80";                        // Width of thumbnail image
$thumb_height = "80";                       // Height of thumbnail image

//Image Locations
$large_image_location = $upload_path.$large_image_name;
$thumb_image_location = $upload_path.$thumb_image_name;

Вот функция изменения размера обрезанного изображения:

function resizeThumbnailImage($thumb_image_name, $image, $width, $height, $start_width, $start_height, $scale){
global $ftp_server;
global $ftp_user_name;
global $ftp_user_pass;
global $thumb_image_location;
global $large_image_location;
global $user;
global $userid;
global $username;
global $success;
global $error;

$conn_id = ftp_connect($ftp_server);

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
ftp_pasv($conn_id, true);

if ($login_result) {
    $newImageWidth = ceil($width * $scale);
    $newImageHeight = ceil($height * $scale);
    $newImage = imagecreatetruecolor($newImageWidth,$newImageHeight);
    $source = imagecreatefromjpeg($image);
    imagecopyresampled($newImage,$source,0,0,$start_width,$start_height,$newImageWidth,$newImageHeight,$width,$height);
    imagejpeg($newImage,$thumb_image_name,90);
    // chmod($thumb_image_name, 0777);

    $upload = ftp_put($conn_id, $thumb_image_location, $thumb_image_name, FTP_BINARY);// upload the file
    ftp_chmod($conn_id, 0777, $thumb_image_location);

    if ($upload) {
        // User DB Queries
        $time = strtotime("now");
        $time = $time + 3600;
        $date = date(c, $time);
        $path = 'http://www.otherserver.net/'. $thumb_image_location;

        $fileQuery = "INSERT INTO `avatars`(userid, username, path, date) VALUES('$userid', '$username', '$path', '$date')";
        $fileResult = mysql_query($fileQuery);
        $userQuery = "UPDATE `users` SET avatar = '$path' WHERE username = '$user'";
        $userResult = mysql_query($userQuery);

        if ($fileResult && $userResult) {
            $success = 'Your avatar has been uploaded successfully.';
        } else {
            $error = 'Something went wrong with your upload.';
        }
    }
}
ftp_close($conn_id); // close the FTP stream
}

Наконец, вот когда вызывается функция:

if (isset($_POST["upload_thumbnail"]) && strlen($large_photo_exists) > 0) {
    //Get the new coordinates to crop the image.
    $x1 = $_POST["x1"];
    $y1 = $_POST["y1"];
    $x2 = $_POST["x2"];
    $y2 = $_POST["y2"];
    $w = $_POST["w"];
    $h = $_POST["h"];
    //Scale the image to the thumb_width set above
    $scale = $thumb_width/$w;
    resizeThumbnailImage($thumb_image_name, "http://otherserver.net/". $large_image_location,$w,$h,$x1,$y1,$scale);

}

Опять же, все работает правильно, за исключением сохранения окончательного (обрезанного) изображения также на локальном сервере (да, оно также сохраняет его на другом сервере, так что с этой частью все в порядке).

1 Ответ

0 голосов
/ 07 июня 2011

Ну, вы делаете две вещи:

  • Создайте JPG на диске с imagejpeg, который называется $thumb_image_name
  • Загрузите JPG на FTP-сервер с ftp_put

Вы никогда не удаляете локальный файл, поэтому он все еще там.

...