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

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

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

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

Q&A

1回答

766閲覧

サーバーに上がっているディレクトリ内の画像(ファイル)を表示させたい

KazKit

総合スコア8

PHP

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

0グッド

0クリップ

投稿2020/01/16 03:54

編集2020/01/16 06:35

現在、phpで簡単な画像アップローどのアプリを作っています。

フォームのinputをfile型にして、submitされたら画像がディレクトリに写り、同じページ内でディレクトリ内のファイルを一覧で表示させたいのですが、

追記

glob関数を使ってforeachでループをかけたのですが、”Undefined variable $result” と、
”Invalid argument supplied for foreach() ”というエラーが出ます。

$resultのヴァーダンプでは、imageフォルダに保存されているファイルが配列で帰ってきていました。

php

1<?php 2 3 4function h($s) { 5 return htmlspecialchars($s, ENT_QUOTES, 'UTF-8'); 6} 7 8$error = ''; 9 10if (isset($_POST['submit'])) { 11 // var_dump($_FILES['file']); 12 // exit(); 13 14 // if (isset($_POST['file'])) { 15 16 $nameFile = $_FILES['file']['name']; 17 $tmpFile = $_FILES['file']['tmp_name']; 18 19 20 if(is_uploaded_file($tmpFile)){ 21 22 move_uploaded_file($tmpFile, '../photo_upload/image/'. $nameFile); 23 24 $result = glob('../photo_upload/image/*'); 25 // var_dump($result); 26 // exit(); 27 28 } 29 30 31} 32 33 34 35?> 36 37<!DOCTYPE html> 38<html lang="en"> 39<head> 40 <meta charset="UTF-8"> 41 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 42 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 43 <title>Image</title> 44 <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous"> 45</head> 46<body> 47 <div class="container mt-5"> 48 <div class="row"> 49 <div class="col-md-8"> 50 <ul class="list-unstyled"> 51 <?php foreach ($result as $image) : ?> 52 <li class="media-body mt-5"> 53 <a href="#"><img src="<?= h($image); ?>"></a> 54 <p>aaa</p> 55 <a href="#">Delete</a> 56 </li> 57 <?php endforeach; ?> 58 </ul> 59 </div> 60 <div class="col-md-4"> 61 <!-- <div class="float-right"> --> 62 <form method="post" enctype="multipart/form-data"> 63 <label>Select Photo</label> 64 <input type="file" name="file"> 65 <input type="submit" name="submit" class="mt-3" value="Save"> 66 <p class="text-danger"><?= h($error); ?></p> 67 </form> 68 <!-- </div> --> 69 </div> 70 </div> 71 </div> 72<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script> 73<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script> 74<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script> 75</body> 76</html>

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2020/01/16 03:58

聞きたいことはなんですか?
退会済みユーザー

退会済みユーザー

2020/01/16 04:03 編集

「うまくいかず」じゃ伝わらないです。tmp_nameから保存先にファイルが保存できているのかどうか、保存先のパスが適切に出力できているのか。h()使ってるけど、なんで?
m.ts10806

2020/01/16 04:05

ひとまず、teratailのガイドライン読んできてください。そこから当てはめて不足していると感じる情報を追記してください
m.ts10806

2020/01/16 04:27

「glob関数を使ってforeachでループをかけたりした」 コードが提示されていませんので、なんとも。
yoorwm

2020/01/16 05:13

ファイル一覧、と言いながら一覧表示に必要なループを使っている箇所が無い辺り、何も分かっていない気がします。 まずは1つでもサーバ上のファイルを表示してみる所から始めると良いかもしれません。
KazKit

2020/01/16 06:35

追記させていただきました!
guest

回答1

0

var_dump($result);

ここ確認してるならどうしてエラーなのかわかるんでは。

いずれにしても「ファイルのアップロード」と「ファイルの取得」は一緒にすべきではないと思います。
今の作りだとファイルアップロードしないと画像見れませんし、単にアクセスしたときに未定義の変数をループにかけようとしています。

投稿2020/01/16 06:42

m.ts10806

総合スコア80850

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問