送信は以下のような実装でして、HTTP側のIMGをくりっくしたらgetPhotoが呼び出されます。
<img id="setImg" onclick="getPhoto();">
送信
var img; function getPhoto () { navigator.camera.getPicture(onSuccess, onFail, { quality: 50,destinationType: Camera.DestinationType.FILE_URI,encodingType:Camera.EncodingType.PNG, sourceType: navigator.camera.PictureSourceType.SAVEDPHOTOALBUM}); } function F(){ var xhr = new XMLHttpRequest(); xhr.open("POST","http://111.11.11.11/P.php",false); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.withCredentials = true; xhr.addEventListener("load", function(e){ }); var data ="_img="+img; xhr.send(data); } function onSuccess (imgUri) { return new Promise(function(resolve, reject) { window.resolveLocalFileSystemURL(imgUri, function success(fileEntry) { fileEntry.file(function(file){ var reader = new FileReader(); reader.onloadend = function(evt) { var blob = new Blob([evt.target.result], {type: "application/octet-binary"}); img=blob; }; reader.readAsArrayBuffer(file); }, function() {console.log(error);}); }, function() {console.log(error);}); })
送信後受け取りのサーバーでは以下のような実装です
$con = new PDO('mysql:host=HOST;dbname=DD;charset=utf8','USER','PASS', array( PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE=>PDO::FETCH_ASSOC, PDO::MYSQL_ATTR_USE_BUFFERED_QUERY=>true, PDO::ATTR_EMULATE_PREPARES=>false, PDO::ATTR_STRINGIFY_FETCHES=>false)); if(isset($_POST['_img'])){ $img=file_get_contents($_POST['_img']); $sql=<<<SQL insert into imgfile(img)values(:i) SQL; $stmt = $con->prepare($sql); $stmt->bindValue(':i',$img); $stmt->execute(); $stmt->close(); }
ここでデータベースをdescで確認するとIncertは成功していますが、Imgのフィールドは空白となっています。
次に取得ですが.
クライアント側
function R(){ var id=1; var xhr = new XMLHttpRequest(); xhr.open("POST","http://111.11.11.11/P.php",false); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.withCredentials = true; xhr.addEventListener("load", function(e){ var ssss = document.getElementById("setImg"); ssss.src=(xhr.responseText); }); var data ="_id="+id; xhr.send(data); }
サーバ側
if(isset($_POST['_id'])){ $id=$_POST['_id']; $sql=<<<SQL select img from imgfile where id= :id SQL; $smst=$con->prepare($sql); $smst->bindValue(':id',$id,PARAM_INT); $smst->execute(); $result=$smst->fetch(); $ret_img =$result['img']; header('Content-type:','image/png'); echo $ret_img; $stmt->close(); }
一応サーバーとのやり取り、データベースへの接続は出来ていますが、画像の拡張子等が上手くいっていないのかな。。。といった所で煮詰まってしまいました、お力を貸してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/28 06:31
退会済みユーザー
2017/04/28 07:39
2017/04/28 07:56
退会済みユーザー
2017/04/28 08:34
2017/04/28 08:51
退会済みユーザー
2017/04/28 08:52
2017/04/28 08:53
2017/04/28 08:56
退会済みユーザー
2017/04/28 09:11
2017/04/28 09:28
退会済みユーザー
2017/04/28 09:32
2017/04/29 05:26 編集