如何使用js和php在远程服务器上保存文件?

时间:2014-07-23 14:38:32

标签: javascript php jquery

我使用html2canvas.js来保存图片。 我知道如何使用这个如果在与php文件相同的位置/服务器。

但现在我想在eBay列表模板中使用该脚本并将图像保存到我的服务器。 这可能吗?

这是我的php文件:

<?php
function ImageFillAlpha($image, $color) {
    imagefilledrectangle($image, 0, 0, imagesx($image), imagesy($image), $color);
}
function imageCreateCorners($sourceImageFile, $name, $radius) {
    # test source image
    if (file_exists($sourceImageFile)) {
        $res = is_array($info = getimagesize($sourceImageFile));
    }
    else
        $res = false;
    # open image
    if ($res) {
        $w = $info[0];
        $h = $info[1];
        switch ($info['mime']) {
            case 'image/jpeg': $src = imagecreatefromjpeg($sourceImageFile);
                break;
            case 'image/gif': $src = imagecreatefromgif($sourceImageFile);
                break;
            case 'image/png': $src = imagecreatefrompng($sourceImageFile);
                break;
            default:
                $res = false;
        }
    }
    # create corners
    if ($res) {
        $q = 10; #change this if you want
        $radius *= $q;
        $r = 0;
        $g = 0;
        $b = 0;
        $nw = $w * $q;
        $nh = $h * $q;
        $img = imagecreatetruecolor($nw, $nh);
        $alphacolor = imagecolorallocate($img, 0, 0, 0);
        imagealphablending($img, false);
        imagesavealpha($img, true);
        imagefilledrectangle($img, 0, 0, $nw, $nh, $alphacolor);
        imagefill($img, 0, 0, $alphacolor);
        imagecopyresampled($img, $src, 0, 0, 0, 0, $nw, $nh, $w, $h);
        # resize image down
        $dest = imagecreatetruecolor($w, $h);
        imagealphablending($dest, false);
        imagesavealpha($dest, true);
        imagefilledrectangle($dest, 0, 0, $w, $h, $alphacolor);
        imagecopyresampled($dest, $img, 0, 0, 0, 0, $w, $h, $nw, $nh);
        # output image
        $res = $dest;
        imagedestroy($src);
        imagedestroy($img);
        imagepng($res, 'cart/'.$name);
    }
    return $res;
}
$image = $_POST['plate_image'];
$ebay_user = $_POST['ebay_user'];
$decoded = base64_decode(str_replace('data:image/png;base64,', '', $image));
$date = date('m-d-Y', time());
$name = "evgrave-".$ebay_user."-".$date.".png";
file_put_contents("/var/www/html/SERVERLOCATION/img/" . $name, $decoded);
$full_path = "/var/www/html/SERVERLOCATION/img/" . $name;
imageCreateCorners($full_path, $name, 25);
$name1 = 'img/'.$name;
echo '<div class="download">';
echo '<br /><p>Result:</p><br />';
echo "<img src='$name1' alt='image' id='img' />";
echo '<p class="download-btn"><a id="download" class="left" href="download.php?&img=' . $name1 .'">Download Image</a><a id="send" class="right" href="#">Send Order</a></p>';
echo '</div>';
?>

这是js函数:

                html2canvas($('#output'), {
                    "logging": true,
                    "onrendered": function(canvas){
                        var dataURL = canvas.toDataURL("image/png");
                        $.post('REMOTESERVER/image.php',{
                            plate_image: dataURL,
                            ebay_user: ebay_user
                        },function(data){
                            $('.overlay').remove();
                            $('#result').html(data);
                        });  
                    }
                });

任何帮助? 感谢

1 个答案:

答案 0 :(得分:0)

你可以采取多种方式。这是其中的两个(虽然他们有相同的概念。)

方法1 - SCP

  • 将文件上传到本地服务器
  • 创建一个在后台运行的脚本,并在文件写入后通过cron / straight将本地文件ssh2_scp_send()发送到远程服务器。

方法2 - FTP

这与方法1非常相似,但使用不同的协议; FTP

  • 将文件上传到本地服务器
  • 创建一个通过FTP连接到远程服务器的脚本,并在文件写入后通过cron / straight将本地文件上传/复制到远程服务器。