TOP ▲ itcore TOPTIPSpaste.php  タグ:php 画像 クリップボード アップロード

画像をクリップボードから貼り付けてサーバへアップする。PHPサンプルプログラム。 | itcore 2018年

テスト実行

Chromeで実行してください。



プログラムソース

<?php
//----------------------------
// paste.php 画像をクリップボードから貼り付けてサーバへアップする。
// 2018-01-12 初期開発
//----------------------------
uIniErrorOutput(); // エラーを画面に出す。
$mode = uForm("mode");
$self_id = "paste";

//----------------------------
// アップロード処理
//----------------------------
if ("upload" == $mode) {
  $file_tmp = $_FILES["file"]["tmp_name"];
  if (file_exists($file_tmp)) {
    $name = uForm("name");
    $file = "img/$name";
    if (move_uploaded_file($file_tmp, $file)) {
      chmod($file, 0644);
      print "$file"; // <img src=$file>
    }
  }
  exit;
}

//----------------------------
// 初期画面
//----------------------------
$title = "画像をクリップボードから貼り付けてサーバへアップする。PHPサンプルプログラム。 | itcore 2018年";
include_once "header.inc"; // ヘッダー
tag("PHP 画像 クリップボード アップロード");
?>
<h2> <?php echo $title; ?></h2>
<h3>テスト実行</h3>
Chromeで実行してください。<br>
<input type=text name='name1' value="画像をコピーして、このテキストボックスを右クリックして貼り付け" size=70><br>
<img id=img1 name='img1' src=""><br>
<script src="../js/jquery-3.2.1.min.js"></script>
<script>

// 画像貼り付け
$(document).on('paste', 'input[name=name1]', function(event){
  var items = (event.clipboardData || event.originalEvent.clipboardData).items;
  for (var i = 0 ; i < items.length ; i++) {
    if (items[i].type.indexOf("image") != -1) {
      upload_file_with_ajax(items[i].getAsFile());
    }
  }
});
// ファイルアップロード
function upload_file_with_ajax(file){
  var formData = new FormData();
  formData.append('file', file);
  formData.append('name', '<?php echo $self_id ?>.png'); // 保存する画像ファイル名 サンプルなので固定。
  $.ajax('<?php echo $self ?>?mode=upload' , {
      type: 'POST',
      contentType: false,
      processData: false,
      data: formData,
    }).done(function( text ){
      document.getElementById("img1").src = text;
    });
}
</script>
<br />

<h3>プログラムソース</h3>
<?php
$data = file_get_contents($self);
print nl2br(uHtmlspecialcharsIndent($data));
?>
<hr>

<?php
//----------------------------
// 共通関数
//----------------------------
// エラーを画面に出す。
function uIniErrorOutput() {
  error_reporting(E_ALL);
  ini_set('display_errors', 1);
}
// フォーム変数の受取。存在しない時は空文字を返す。
function uForm($var) {
  if (isset($_POST[$var])) return $_POST[$var];
  if (isset($_GET[$var])) return $_GET[$var];
  return "";
}
// インデント付きのhtmlspecialchars 行頭の空白を&nbsp;に変換する。
function uHtmlspecialcharsIndent($text) {
  $a_line = explode("\n", $text); // 行に分割
  $text1 = "";
  for($i2 = 0; $i2 < count($a_line); $i2++) {
    $line = $a_line[$i2];
    for ($i = 0; $i < strlen($line); $i++) {
    $s1 = substr($line, $i, 1);
      if (" " == $s1) {
        $text1 .= "&nbsp;";
      } else if ("\t" == $s1) {
        $text1 .= "&nbsp;&nbsp;&nbsp;&nbsp;";
      } else {
        $text1 .= htmlspecialchars(substr($line, $i)) . "\n";
        break;
      }
    }
    if (count($a_line) -1 != $i2 && 0 == strlen($line)) $text1 .= "\n"; // 最終行以外の空行
  }
  return $text1;
}

?>