я хочу сохранить или скачать изображение с URL-адреса или данных BLOB-объекта - PullRequest
0 голосов
/ 11 июня 2019

Я делаю событие вставки из буфера обмена, оно создает URL-адрес BLOB-объекта.Теперь я не могу сохранить или получить файл.Как я могу сохранить его на моем компьютере?Я думаю, что я совершенно неправ в получении блоба в моем php.я получаю его как строку, а затем пытаюсь сохранить его

Это мой код для создания BLOB-объекта

<?php 
if( isset( $_FILES['file'] ) ) {
    $file_contents = file_get_contents( $_FILES['file']['tmp_name'] );
    header("Content-Type: " . $_FILES['file']['type'] );
    die($file_contents);
}
else {
    header("HTTP/1.1 400 Bad Request");
}
print_r($_FILES);
?>

<script type="text/javascript">
document.onpaste = function (e) {
    var items = e.clipboardData.items;
    var files = [];
    for( var i = 0, len = items.length; i < len; ++i ) {
        var item = items[i];
        if( item.kind === "file" ) {
            submitFileForm(item.getAsFile(), "paste");
        }
    }

};

function submitFileForm(file, type) {
    var extension = file.type.match(/\/([a-z0-9]+)/i)[1].toLowerCase();
    var formData = new FormData();
    formData.append('file', file, "image_file");
    formData.append('extension', extension );
    formData.append("mimetype", file.type );
    formData.append('submission-type', type);

    var xhr = new XMLHttpRequest();
    xhr.responseType = "blob";
    xhr.open('POST', '<?php echo basename(__FILE__); ?>');
    xhr.onload = function () {
        if (xhr.status == 200) {
           var img = new Image();

            img.src = (window.URL || window.webkitURL)
                .createObjectURL( xhr.response );
            document.getElementById("nye").appendChild(img);
             document.getElementById("nye").style.display = "none" ;
            var x = document.getElementById("image");
  x.setAttribute("type", "text");
  x.setAttribute("value", img.src);
  document.getElementById("image").appendChild(x);



        }
    };

    xhr.send(formData);
}
</script>

Это мой код, который сохраняется на моем компьютере, он работает, но я просто получаюпустой файл JPG

<?php
  $data = $_POST['url'];
  $filePath = $uploadDir . $name;

  $contents_split = explode(',', $data);
  $encoded = $contents_split[count($contents_split)-1];
  $decoded = "";
  for ($i=0; $i < ceil(strlen($encoded)/256); $i++) {
    $decoded = $decoded . base64_decode(substr($encoded,$i*256,256)); 
  }

  $fp = fopen('sample23.jpg', 'w');
  fwrite($fp, $decoded);
  fclose($fp);
?>

он сохраняет, но я думаю, что файл пуст.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...