2013-09-24 3 views
1

У меня есть встроенный aviary на мою веб-страницу, и он работает нормально, но я не могу использовать команду file_get_contents, чтобы захватить сохраненное изображение.Ошибка 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); 

?> 

При запуске этой ошибки с этой ошибкой

[24-Sep-2013 12:14:16 UTC] PHP Warning: file_get_contents() [function.file-получить содержание]: Имя файл не может быть пусто в ......

Есть ли у кого-нибудь опыт в том, как я могу захватить файл, созданный на вольерном сервере, и загрузить копию на мой сервер.

ОБНОВЛЕНИЕ Я заметил, что файл с именем 'photo.jpg' добавлен на сервер с размером файла 0kb. Я предполагаю, что это от file_put_contents("photo.jpg",$image_data);, но данные изображения пустые, так как это ошибка, если файл_get_contents

Любые идеи?

+0

file_get_contents является линия выше file_put_contents –

ответ

0

Пожалуйста, убедитесь, что на вашем разъединяет allow_url_fopen = 0

, если это значение равно 1 file_get_contents не может работать

это тот случай, вы можете использовать локон

+0

по моему phpinfo файл allow_url_fopen установлен в «на» в местных и Master –

+0

файл «photo.jpg» в настоящее время загружены на сервер, но с размер_файла из 0KB, так что-то но я просто не полностью понимаю код –

0

Aviary сообщения обратно к URL вашего выбора с ссылку на файл, сохраненный на их серверах. Итак, вам нужно добавить маршрут на своем сервере с фрагментом кода на стороне сервера выше и убедиться, что указанный postUrl - это URL-адрес вашего сервера, который будет вызывать этот код.

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 установлен на вкл/1 это будет работать

Вам не нужно, чтобы добавить

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

линии, чтобы сделать это таким образом

Поскольку этот пост очень старый, если вы нашли хороший способ сделать это, вы бы разделили его?