TOP ▲
itcore TOP
> TIPS
> paste.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 行頭の空白を に変換する。
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 .= " ";
} else if ("\t" == $s1) {
$text1 .= " ";
} else {
$text1 .= htmlspecialchars(substr($line, $i)) . "\n";
break;
}
}
if (count($a_line) -1 != $i2 && 0 == strlen($line)) $text1 .= "\n"; // 最終行以外の空行
}
return $text1;
}
?>