プロが教える店舗&オフィスのセキュリティ対策術

画像アップスクリプトについて こんにちは。先にお...
プロフィール画像
miyasita1958さん 2016/10/25 09:46:34
助けてください。画像アップスクリプトについて

こんにちは。先にお願いですが、そろそろ還暦を迎える年寄りをです。勝手いってすみませんが知識も少なく具体的な回答でないと理解できません。高齢者でも、現在の画像をアップできるようにクリップボードからのアップが思いつき、WEBで検索して切り張りして途中までつくりましたが、最後のアップロード方法がわかりません。
ソース載せました。?????の引数はどうしたら渡せるでしょうか?

<script>
var src_canvas;
var src_ctx;
var image;

// ブラウザ判定
var clipboard_flg;
if((!window.navigator.msSaveBlob) &&
(window.navigator.userAgent.toUpperCase().indexOf('CHROME') != -1)){
// chrome
clipboard_flg = true;
}else if((window.navigator.msSaveBlob) &&
(window.navigator.userAgent.toUpperCase().indexOf('CHROME') != -1)){
// Edge
clipboard_flg = true;
}else{
// その他
clipboard_flg = false;
}

window.onload = function(){

src_canvas = document.getElementById("SrcCanvas");
src_ctx = src_canvas.getContext("2d");

image = document.getElementById("img_source");
}

if (clipboard_flg){

document.addEventListener('paste', function(e) {

e.preventDefault();

var items = e.clipboardData.items;
var dti = null;

for(i = 0; i < items.length; i++) {
if(items[i].type.indexOf("image") != -1) {
dti = items[i];
break;
}
}

if(dti){
image.onload = function(){
src_canvas.width = image.width;
src_canvas.height = image.height;
src_ctx.drawImage(image,0,0);
}
image.src = window.URL.createObjectURL(dti.getAsFile());

}else{
alert('err');
}

});
}

function getClipboardImage(){

if (clipboard_flg) return false;

function SearchImage(parent){

for(var i=0;i< parent.children.length;i++){
var child = parent.children[i];

if(child.nodeName.toUpperCase() == 'IMG'){
try{

var pollution_canvas = document.createElement("canvas");
pollution_canvas.style.display = 'none';
document.body.appendChild(pollution_canvas);
pollution_canvas.width = child.width;
pollution_canvas.height = child.height;
pollution_ctx = pollution_canvas.getContext("2d");

try{
pollution_ctx.drawImage(child,0,0);
}catch(e){
throw 'SecurityError';
}
pollution_ctx.getImageData(0, 0, pollution_canvas.width, pollution_canvas.height);
document.body.removeChild(pollution_canvas);

src_canvas.width = child.width;
src_canvas.height = child.height;

src_ctx.drawImage(child,0,0);
}catch(e){
alert(e +'\n\n' +'xxx\n'+'※Chromeをご利用ください。');
}
return true;
}
}

// 再帰処理
for(var i=0;i< parent.children.length;i++){
if (SearchImage(parent.children[i])) return true;
}
}
var paste = document.getElementById("PasteArea");
SearchImage(paste);
paste.innerHTML = '【使い方】~。';
document.getElementById("PasteArea").style.border='2px solid #ccc';
}

// ファイルアップロード
function upload_file_with_ajax(file){
var formData = new FormData();
formData.append('file', file);
$.ajax('/upload/image' , {
type: 'POST',
contentType: false,
processData: false,
data: formData,
error: function() {
success: function(res) {

}
});
}

function upload_file(){
upload_file_with_ajax(?????);
}

</script>
</head>
<body>
<p></p>
<div id="PasteArea" contenteditable="true" onkeyup ="getClipboardImage();"
onclick="PasteArea.style.border='1px solid #1e90ff';"
onblur="PasteArea.style.border='1px solid #ccc';"
style="width:90%;height:90px;border:1px solid #ccc;padding:10px;">
【使い方】<br>
1.このエリアをマウスでクリックします。<br>
2.キーボードの「Ctrl」キーを押しながら「V」キーを押します。<br>
3.アップロードをクリックします。<br>
</div>
<form name="form1" method="post"">
<input type="button" value="アップロード" onclick="upload_file()"/>
</form>
<img id="img_source" style="display:none;">
<canvas id="SrcCanvas"></canvas>

質問者からの補足コメント

  • うーん・・・

    はい、利用対象が不特定多数の高齢者です。
    パニック時に画面の状況を教えてもらいたいのでなるべくシンプル操作でないと難しいです

    No.1の回答に寄せられた補足コメントです。 補足日時:2016/10/27 07:26

A 回答 (2件)

jQueryのajax経由でアップロードしてよいという認識でよいですか?



<script src="適当なpath/jquery.js"></script>
<script>
$(function(){
$('[value=up]').on('click', function() {
var data=$('#imagearea img:first-child').attr('src');
if(data){
$.ajax({
type: 'POST',
url: 'uploadimage.php',
data: {
'data': data
},
dataType: 'text',
success: function( result ) {
},
});
}
});
});


</script>
<div id="imagearea" contenteditable='true'>ここに貼り付ける</div>
<input type="button" value="up">

あとはデータを受け取る側のuploadimage.phpが画像にファイル名をつけて
適当なpathにデータを流し込むだけです。
    • good
    • 1
この回答へのお礼

お返事遅れてすみません。
ご回答、どう組み込みすればよいかまだわかりませんが、これをヒントに色々勉強しつつ頑張ってみます。
JS覚えたいですが、年寄り初心者には結構ハードル高くて。

ありがとうございました。

お礼日時:2016/10/30 19:43

クリップボードからのアップロードが必須でしょうか?


一般にファイルのアップロードと言えばinput type="file"ですが、これはNG?
この回答への補足あり
    • good
    • 1
この回答へのお礼

なれないものですみません。ご回答ありがとうございました。

お礼日時:2016/10/30 19:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!