2013-07-17 1 views
-1

Я хочу, чтобы загрузить html2canvas в файл изображения, используя скрипт загрузки php. На странице есть скользящая панель с фигурами для пользователя, чтобы выбрать упражнение. Веб-страница с отображаемыми результатами должна быть захвачена и сохранена в файл изображения.Какой скрипт загрузки php я могу использовать для сохранения canvas как png на локальный компьютер?

Ниже приведен сценарий, который я использовал, встроенный в html-код.

function triggerPull() { 
    if (document.getElementById('name').value != "") { 
     html2canvas(document.getElementById('body'), { 
      onrendered: function(canvas) { 
       var dataURL = canvas.toDataURL('img/png'); 
       canvas.src = dataURL; 
       document.getElementById('url').value = dataURL; 
       document.download.submit(); 
      } 
     }); 
    } else { 
     alert('Please fill in your name first.'); 
    } 
} 

Я пробовал сценарий ниже для файла downloader.php. Я получаю только пустой файл с именем downloader.php.png Пожалуйста, помогите!

header('Content-type: image/png'); 
header('Content-Disposition: attachment; filename="' . $_POST['name'] .'"'); 
$encoded = $_POST['img']; 
$encoded = str_replace(' ', '+', $encoded); 
$decoded = base64_decode($encoded); 
echo $decoded; 
?> 
+0

Таким образом, для уточнения, проблема заключается в том, что вы рендеринг PNG изображения с помощью PHP скрипта, но он поврежден? Попробуйте сохранить изображение на диск из своего браузера и посмотреть, есть ли ошибка в двоичном потоке. Например, если у вас есть какие-либо пробелы перед заголовками, ваши команды заголовка вызовут предупреждение. – halfer

+0

У меня есть только небольшое представление об объекте canvas, но из того, что я знаю, содержимое холста, вероятно, не загружается до выполнения какого-либо javascript и, как таковое, может быть недоступно для скачивания на сервере, поскольку javascript не будет через интерпретатор. –

+0

Я попытался сохранить на диск из веб-браузера, но я только получил вариант «Сохранить как веб-страницу». – user2584997

ответ

-1

Попробуйте этот код

$file = $_POST['url']; 
$file = str_replace(' ', '+', $file); 
header('Content-Description: File Transfer'); 
header('Content-Type: application/octet-stream'); 
header('Content-Disposition: attachment; filename=chart.png'); 
header('Content-Transfer-Encoding: binary'); 
readfile($file); 
+0

Я пробовал код, я получаю тот же результат, за исключением имени файла с именем downloader.php. – user2584997

+0

Внутри загруженного файла следующий код:
Предупреждение: ReadFile(): Имя файла не может быть пустым в C: \ классного \ Docs \ downloader.php на линии
user2584997

+0

вот [ссылка] (http://mgdevbbapp.devmary.marygrove.edu/Learning%20Spectrum.htm) – user2584997

 Смежные вопросы

  • Нет связанных вопросов^_^