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

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

新規登録して質問してみよう
ただいま回答率
85.31%
MySQL

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

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

PHP

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

Q&A

解決済

1回答

222閲覧

ファイルのpostがうまくいかない

okazu2424

総合スコア5

MySQL

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

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

PHP

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

0グッド

0クリップ

投稿2023/08/30 13:26

実現したいこと

mysqlで画像ファイルの共有

前提

画像データをBASE64に変換しているんだけどおそらくファイルの取得がうまくいってないと思う

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

ファイルが選択されていないのでエラーは起きない

該当のソースコード

index.php

1<?php 2 //送信時の初期設定 3 $pdo = new PDO('mysql:host=""";dbname=""";', '"""', '"""', [PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC]); 4 $smo = $pdo->prepare("INSERT INTO `value` (`2`) VALUES(:2)"); 5 //データ送信 6 if (isset($_POST["txt"])) { 7 $txt = $_POST["txt"]; 8 $smo = $pdo->prepare("INSERT INTO `value` (`1`) VALUES(:1)"); 9 $params = array(':1' => $txt . "</br>"); 10 $smo->execute($params); 11 header("Location: http://nandemo204.starfree.jp/index.php"); 12 } 13 if (!empty($_FILES['upload_file']) && $_FILES['upload_file']['error'] === UPLOAD_ERR_OK) { 14 echo $_FILES['upload_file']['tmp_name']; 15 $image_path = $_FILES['upload_file']['tmp_name']; 16 $image = imagecreatefromjpeg($image_path); 17 list($width, $height) = getimagesize($image_path); 18 // 新しいサイズを設定 19 $new_width = 500; // 新しい幅 20 $new_height = (int)(500 / $width * $height); // 正しい変数名を使用 21 $resized_image = imagecreatetruecolor($new_width, $new_height); 22 imagecopyresampled($resized_image, $image, 0, 0, 0, 0, $new_width, $new_height, imagesx($image), imagesy($image)); 23 // リサイズされた画像を直接エンコード 24 ob_start(); 25 imagejpeg($resized_image, null, 80); 26 $image_data = ob_get_clean(); 27 // 画像データをBase64エンコード 28 $base64_image = base64_encode($image_data); 29 $params = array(':2' => $base64_image); 30 $smo->execute($params); 31 } else { 32 echo "ファイルアップロードエラー: " . $_FILES['upload_file']['error']; 33 } 34 //データ取得 35 $sql = "SELECT * FROM value"; 36 $sma = $pdo->query($sql); 37 $data = $sma->fetchAll(PDO::FETCH_ASSOC); 38 foreach ($data as $row) { 39 echo $row['1']; 40 } 41 //画像データ取得 42 $sql = "SELECT * FROM value"; 43 $sma = $pdo->query($sql); 44 $data = $sma->fetchAll(PDO::FETCH_ASSOC); 45 foreach ($data as $row) { 46 echo '<img src="data:image/png;base64,' . $row['2'] . '" alt="Base64 Image">'; 47 } 48?>

試したこと

ファイルが選択されたときに反応するようにifを使ってもうまくいかなかったのでおそらくうまくpostされていない

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

スターサーバーフリー設定は以下
セッション設定
session.auto_start  Off  
session.use_cookies  On  
session.use_only_cookies  On  
session.use_trans_sid  Off  
session.name  PHPSESSID 
session.cookie_lifetime  0 
session.cookie_path  / 
session.cookie_domain   
文字コード設定
mbstring.language  Japanese 
mbstring.internal_encoding  UTF-8 
mbstring.http_input  pass 
mbstring.http_output  pass 
mbstring.encoding_translation  Off 
mbstring.detect_order  auto 
mbstring.substitute_character  none 
その他の設定
safe_mode   
max_execution_time  180 
max_input_time  -1 
memory_limit  1G 
post_max_size  1G 
upload_max_filesize  1G 
register_globals   
magic_quotes_gpc   
file_uploads  On 
allow_url_fopen  On 
allow_url_include  Off 
バージョンphp:7.4.33

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

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

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

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

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

yambejp

2023/08/31 00:11

ごめんなさい、聞きたいところがどこなのかよくわかりません。 ファイルが受け取れないなら送り元の問題では?
okazu2424

2023/08/31 04:49

htmlとphpの間の通信の話です <!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="index.css"> </head> <body> <h1>何でも掲示板</h1> <p>※mysqlを使って掲示板を作りました</p> <p>コメント</p> <form method="post" enctype="multipart/form-data"> <input type="text" name="txt" value=""> <input type="file" name="upload_file" accept=".jpg, .png, .gif"> </form> </body> </html>
yambejp

2023/08/31 06:20

サブミットしてないから送られていないのでは?
guest

回答1

0

ベストアンサー

自分自身にpostするのであればこれでファイルの受け渡しが確認できます

PHP

1<?PHP 2print_r($_FILES); 3?> 4<form method="post" enctype="multipart/form-data"> 5<input type="text" name="txt" value=""> 6<input type="file" name="upload_file" accept=".jpg, .png, .gif"> 7<input type="submit" value="send"> 8</form>

投稿2023/08/31 06:22

yambejp

総合スコア117673

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

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

okazu2424

2023/08/31 06:36

できましたありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問