1

Web ページに鳥小屋を埋め込んで正常に動作していますが、file_get_contents コマンドを使用して保存した画像を取得できません。

鳥小屋コード:

JS:

<!-- Load Feather code -->
<script type="text/javascript" src="http://feather.aviary.com/js/feather.js"></script>

<!-- Instantiate Feather -->
<script type='text/javascript'>
var featherEditor = new Aviary.Feather({
    apiKey: '*********',
    apiVersion: 3,
    theme: 'light', // Check out our new 'light' and 'dark' themes!
    tools: 'crop,orientation,brightness,sharpness,redeye,effects,stickers,focus,contrast,whiten,warmth,colorsplash,enhance,saturation,blemish,draw,text,frames',
    appendTo: '',

    onSave: function(imageID, newURL) {
        var img = document.getElementById(imageID);
        img.src = newURL;       
    },           

    onError: function(errorObj) {
        alert(errorObj.message);
    },

    postUrl: 'http://example.com/featherposturl'      
});

function launchEditor(id, src) {
    featherEditor.launch({
        image: id,
        url: src
    });
    return false;
}

HTML:

<div id='injection_site'></div>

<img id='image1' src='photo.jpg' style="max-height:360px;" on/>

<p><input type='image' src='http://images.aviary.com/images/edit-photo.png' value='Edit photo' onclick="return launchEditor('image1', document.getElementById('image1').src);"/></p>

鳥小屋のドキュメントによると、鳥小屋サーバーで作成された一時ファイルを取得できますが、次の php コードを使用します。

<?php

    $image_data = file_get_contents($_REQUEST['url']);

    file_put_contents("photo.jpg",$image_data);

?>

これを実行すると、このエラーでエラーになります

[2013 年 9 月 24 日 12:14:16 UTC] PHP 警告: file_get_contents() [function.file-get-contents]: ファイル名を空にすることはできません......

鳥小屋サーバーで作成されたファイルを取得して、サーバーにコピーをアップロードする方法について、経験のある人はいますか?

更新 「photo.jpg」という名前のファイルが、ファイルサイズ 0kb でサーバーに追加されていることに気付きました。これは からのものであると想定していfile_put_contents("photo.jpg",$image_data);ますが、file_get_contents の場合はエラーであるため、画像データは空白です。

何か案は?

4

3 に答える 3

0

私は同じ問題を抱えていました。この答えはおそらく少し遅れていますが、この方法で回避しました。それは最善の方法ではありませんが、うまくいきます

あなたのJavaScriptでこれを変更してください:

onSave: function(imageID, newURL) {
        var img = document.getElementById(imageID);
        img.src = newURL;       
    },

これに:

onSave: function(imageID, newURL) {
        var img = document.getElementById(imageID);
        img.src = newURL;
        var old_image = $('#oldimage').val(); //this is a hidden field with the HTML LINK for the original image on your server
        $.ajax({
            url : 'PHP Processing page',
            type : 'POST',
            dataType : 'JSON',
            data : {oldimage : old_image, newimage : img.src},
            success : function (json) {
                console.log(json);
            }
        }); 
    }

HTML:

<input id="oldimage" type="hidden" value="ORIGINAL IMAGE" />
<button class="button special fit" onclick="return launchEditor('image1', 'ORIGINAL IMAGE');">Edit This Image</button>

PHP 処理ページ:

$default = getenv("DOCUMENT_ROOT");
define("SITEROOT",$default."/yoursite/");
define("SITEHTMLROOT", "http//www.yoursite.com/");

$oldimage = str_replace(SITEHTMLROOT, SITEROOT, $_POST['oldimage']);
$newimage = $_POST['newimage'];
copy($newimage, $oldimage);

allow_url_fopen が on/1 に設定されている限り、これは機能します

追加する必要はありません

postUrl: ' http://example.com/featherposturl '

このようにするための行

この投稿は非常に古いため、これを行う良い方法を見つけた場合は共有していただけますか?

于 2016-01-27T14:24:42.287 に答える
0

サーバーで確認してくださいallow_url_fopen = 0

値が 1 の場合は機能しfile_get_contentsません

その場合はcurlを使用できます

于 2013-09-24T12:35:10.373 に答える