【问题标题】:upload image file to different server将图像文件上传到不同的服务器
【发布时间】:2015-01-02 21:18:07
【问题描述】:

我想在不同的服务器上上传图片。图片正在上传。但它的格式不正确。 对于此代码,它适用于文件。

相同的服务器(工作中)

$file_path = "./media/";

$file_path = $file_path . basename( $_FILES['uploaded_file']['name']);
if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $file_path)) {
    echo "success";
} else{
    echo "fail";
}

另一台服务器(工作但未获得实际图像)

$file_name = $cus_id . ".jpg";
$file_path = CUS_PROFILE_PIC_DOCROOT . $file_name;

$ftp_server = "some_address";
$ftp_user = "username";
$ftp_password = "password";
$conn = ftp_connect($ftp_server) or die ("Cannot connect to host");
if (@ftp_login($conn, $ftp_user, $ftp_password)) {
    ftp_pasv($conn, true);
    $uploaded = ftp_put($conn, $file_path, $_FILES['uploaded_file']['tmp_name'], FTP_ASCII);
    ftp_close($conn);
    if($uploaded){
        echo "success";
    }
    else{
        echo "fail";
    }
} else {
    return "Couldn't connect as $ftp_user\n";
}

我做错了什么? 感谢您的帮助。

【问题讨论】:

  • 究竟是什么不起作用?
  • 我正在获取图像。但是,不是它的实际格式。图像是 950 kb。但每次我都能看到 60 kb。 Windows图像查看器不支持它。
  • 转换为base64或二进制
  • 你试过用 FTP_BINARY 代替 FTP_ASCII 吗?
  • @CharlotteDunois:哦。它正在使用FTP_BINARY。太感谢了。我不知道这背后的原因是什么。

标签: php file-upload upload


【解决方案1】:

您必须对图像使用 FTP_BINARY,因为它们是二进制的。您应该只以 ASCII 格式发送文本文件。

【讨论】:

    【解决方案2】:

    我正在使用此代码上传:

    //  set_time_limit(0);
            $connection = ftp_connect("domain.com");
            $login = ftp_login($connection, "admin", "pass");
            if (!$connection)
                {
                 die('Connection attempt failed!');
                }
            else{
                 echo "connection passed";
                 }
        if (!$login)
                {
                 die('Login attempt failed!');
                }
                else{
                echo "login passed";
                }
        ftp_pasv($connection, true);
    
    <p>    $source = "image.jpg";
        $dest = "folder/image.jpg";</p>
    <p>    //$x = substr($dest,-4);
        // echo $x;</p>
    <p>    if((substr($dest,-4) == ".jpg") || (substr($dest,-4) == ".png") )
    {
     //no problems;
    }
    else {
    die('only jpg or png.');
    }</p>
    <p>    $upload = ftp_put($connection, $dest, $source, FTP_BINARY);
        if (!$upload) { echo 'FTP upload failed!'; } else {echo "ftp upload passed";}</p>
    <p>    ftp_close($connection);</p>
    <p>?></p>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-23
      • 2016-06-06
      • 1970-01-01
      • 2020-04-29
      • 2016-03-29
      • 2011-09-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多