質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Q&A

0回答

657閲覧

vueと素(バニラ、vanilla)のphpを使って画像をアップロード,db(データベース,mysql)に保存したいが保存できない。laravelは使えません。

_akasa

総合スコア5

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

0グッド

0クリップ

投稿2021/10/27 12:49

前提・実現したいこと

ajaxでvueからphpを使ってdbに画像を保存したいができない。
ajaxは動いておりaxiosでpostした後のthenのコールバック関数は動いています。

発生している問題・エラーメッセージ

postをしてもdbにデータが入っていない。理由が分からないです。
axiosのparamの値はaccount_idは5が入っており、tekitouには

okuru: File
lastModified: 1635246922531
lastModifiedDate: Tue Oct 26 2021 20:15:22 GMT+0900 (日本標準時) {}
name: "スクリーンショット 2021-10-26 20.14.54.png"
size: 99334
type: "image/png"
webkitRelativePath: ""

が入っていました。

該当のソースコード

upload.php

upload.php

1 2try{ 3 header("Access-Control-Allow-Origin: *"); 4 $db=new PDO('mysql:dbname=test;host=localhost;charset=utf8', 5 'root', 6 '', 7 [ 8 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 9 PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, 10 PDO::ATTR_EMULATE_PREPARES=>false 11 ] 12 ); 13 14 if(!empty($_FILES["image"]["tmp_name"])&&!empty($_POST['account_id'])){ 15 16 // これterateil 17 // $file_tmp = $_FILES["image"]["tmp_name"]; 18 // $file_name = date("Y-m-d H:i:s") . "_" . $_FILES["image"]["name"]; 19 // $file_save = "./img/" . $file_name; 20 // if($_FILES["image"]["size"] !== 0) { 21 // //画像がアップロードされた時、所定のフォルダに保存 22 // move_uploaded_file($file_tmp, $file_save); 23 // } 24 // $new_image = filter_input(INPUT_POST, "tekitou"); 25 // print($new_image["tmp_name"]); 26 27 $img_data = file_get_contents($_FILES['image']['tmp_name']); 28 29 $stmt=$db->prepare('insert into raw (created_id,raw_data,account_id) values (now(),?,?'); 30 $stmt->bindValue(1,$img_data); 31 $stmt->bindValue(2,$_POST['acccount_id']); 32 $stmt->execute(); 33 34 35 } 36 37}catch(Execption $e){ 38 echo $e->getMessage(); 39}

js(dispatch先、action)

js(dispatch先)

1 2gazoupload(context,payload){ 3 // let that=this; 4 let param =new FormData(); 5 param.append('tekitou',payload); 6 param.append('account_id',this.state.user.now_account[0].id); 7 console.log(this.state.user.now_account[0].id); 8 console.log(payload); 9 axios.post( 10 '/spa-test/src/htdocs/udemy-php/upload.php', 11 param, 12 { 13 headers: { 14 'content-type': 'multipart/form-data' 15 }, 16 } 17 ).then(function(data){ 18 console.log('dekita',data.data); 19 }) 20 }

vue.js

vue.js

1<template> 2 <div> 3 <input type="file" name="atteru" @change="uploadFile" ref="preview" enctype="multipart/form-data"> 4 <button @click="sousin">送信</button> 5 </div> 6</template> 7 8<script> 9export default { 10 data(){ 11 return{ 12 // gazo:this.$refs.preview.files[0], 13 default:null 14 } 15 }, 16 methods:{ 17 uploadFile(e){ 18 console.log(this.$refs.preview.files); 19 e.preventDefault() 20 this.default=this.$refs.preview.files[0]; 21 }, 22 sousin(){ 23 this.$store.dispatch('gazoupload',{okuru:this.default}); 24 } 25 } 26} 27</script>

補足情報(FW/ツールのバージョンなど)

chrome
windows 10
xampp

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CHERRY

2021/10/28 07:01

file_get_contents で、$_FILES['image']['tmp_name'] を読み込んでいますが、$_FILES['image']['tmp_name'] のファイルは、存在していますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問