- PR -

PHPで画像アップロードする方法を教えて下さい。

投稿者投稿内容
shimix
ぬし
会議室デビュー日: 2004/08/05
投稿数: 512
お住まい・勤務地: 大分市
投稿日時: 2007-04-04 23:46
いつの間にか元記事が変わっていたのですね。気付きませんでした・・

引用:

kiyoさんの書き込み (2007-04-04 17:39) より:
常に最新でアップされた画像ファイルを表示させるようにしたいところです。


アップロードした画像を保存したときに、その画像ファイル名を適当なテキストファイルに書き込んでおけばいいだけでは?

(蛇足)
そういうことなら件名:PHPで画像アップロードする方法を教えて下さい。というのはちょっとあんまりかも・・

[ メッセージ編集済み 編集者: shimix 編集日時 2007-04-04 23:49 ]
kalze
ぬし
会議室デビュー日: 2003/10/23
投稿数: 406
お住まい・勤務地: 東京・東京
投稿日時: 2007-04-05 02:17
最初の投稿直されると気づかないってことのほうが多いので、
補足としてスレにレスするようにしたほうがよいかとおもいます。


引用:

今後は、任意のファイル名でも画像をアップロードして
常に最新でアップされた画像ファイルを表示させるようにしたいところです。



要件わかりませんが。

ファイル名は不変でよく、アップされた画像を保存しておく必要がないなら、
常に同じファイル名で上書きしていくことで解決

保存しておく必要があるなら、ファイル名変わっていくので、
shimix氏の書かれているように、アップされた画像を保存するときに、
ファイル等にファイル名を保存しておく。

ファイル名とアップされた時間をDBに放り込んで、もっとも新しいアップされた時間のファイル名を取得する。

ファイル名がアップされたときの名前でなくて良いなら、エポックタイムとか日時とかファイル名に時間を埋め込んでそれでソートすれば一番新しいのがわかる。

条件次第でいかようにもできるとおもうのだけど。


kiyo
会議室デビュー日: 2006/12/15
投稿数: 8
投稿日時: 2007-04-05 15:30
皆さんご回答ありがとうございます。

例えば画像保存用ディレクトリーに下記のように画像が保存された
場合で200704041527.jpgの画像を出力したければ、ファイル名を日付・時刻で付けて降順を取り入れれば最新の画像出力が出来るかと思いますがあっていますでしょうか?

data
|-200704041527.jpg
|-200704032022.jpg

[ メッセージ編集済み 編集者: kiyo 編集日時 2007-04-05 15:31 ]
shimix
ぬし
会議室デビュー日: 2004/08/05
投稿数: 512
お住まい・勤務地: 大分市
投稿日時: 2007-04-05 16:11
引用:

kiyoさんの書き込み (2007-04-05 15:30) より:
ファイル名を日付・時刻で付けて降順を取り入れれば最新の画像出力が出来るかと思いますがあっていますでしょうか?


もしそうならないとすれば、どういう原因があると思われますか?私はちょっと思いつきません。やってみればわかることですけど。

保存時には「秒単位」のようですのでファイル名の重複をどう避けるかという問題はありますが。
kiyo
会議室デビュー日: 2006/12/15
投稿数: 8
投稿日時: 2007-04-05 19:53
皆さんありがとうございました。
参考になりました。

今は参考書とWEBを活用しちんぷんかんぷんではありますが
今回皆さんから頂いたアドバイスを基に考えてみます。

あと、質問する時の会議室も間違ってました。
皆様申し訳ありませんでした。

kiyo
会議室デビュー日: 2006/12/15
投稿数: 8
投稿日時: 2007-04-06 00:15
引用:

shimixさんの書き込み (2007-04-04 23:46) より:
いつの間にか元記事が変わっていたのですね。気付きませんでした・・

引用:

kiyoさんの書き込み (2007-04-04 17:39) より:
常に最新でアップされた画像ファイルを表示させるようにしたいところです。


アップロードした画像を保存したときに、その画像ファイル名を適当なテキストファイルに書き込んでおけばいいだけでは?

(蛇足)
そういうことなら件名:PHPで画像アップロードする方法を教えて下さい。というのはちょっとあんまりかも・・

[ メッセージ編集済み 編集者: shimix 編集日時 2007-04-04 23:49 ]




shimixさん
Kiyoです。

shimixさんのアドバイスでいろいろと調べてみてますがどうもできません。
今回はデータベースは使用してません・・・まだ初心者の為、今後スキルアップを考えております。

その為、現状はPHPのサンプルスクリプトを使用させて頂いていろいろと制作してみています。

今回の苦戦していたことでshimixさんの方法だと出来ると分りましたが下記の方法では可能でしょうか?

まずファイル名を取得してname.txtにファイル名を保存をし画像出力を実行させようと考えております。

階層例 … sample.jpgをアップロードした場合です

dir
|-- sample.jpg  画像ファイル保存
|-- name.txt  txt内は sample.jpg の一行で記録


画像出力時

<img src="<?php
$file = fopen("name.txt","r+");
fpassthru($file);
?>">

上記内容を踏まえて以下のスクリプトよりname.txtの生成の実行を考えておりますが
どうも実行(.txt)の生成方法が分かりません。

自分が思うにはスクリプトの2行目からファイル名を取得してname.txtをあらかじめディレクトリー内へ保存しておいてname.txt内に画像ファイル名の保存の実行を行えば可能だと考えております。

そこで下記方法でname.txtへ画像ファイル名を保存していくにはどのようなスクリプトを使用すればname.txtへ書き込みが可能でしょうか?

if (is_uploaded_file(@$_FILES["upfile"]["tmp_name"])) {

$file_name = $save_dir.$_FILES["upfile"]["name"];


長々となって申し訳ございませんが間違った方法かもしれませんが
アドバイスをお願いいたします。


[ メッセージ編集済み 編集者: kiyo 編集日時 2007-04-06 00:25 ]

[ メッセージ編集済み 編集者: kiyo 編集日時 2007-04-06 00:27 ]
shimix
ぬし
会議室デビュー日: 2004/08/05
投稿数: 512
お住まい・勤務地: 大分市
投稿日時: 2007-04-06 01:21
引用:

kiyoさんの書き込み (2007-04-06 00:15) より:
画像出力時

<img src="<?php
$file = fopen("name.txt","r+");
fpassthru($file);
?>">



やってみればわかりますが、多分大丈夫かと思います。あと・・ファイル操作は基本中の基本なので、普通の解説書には必ず出ていると思います。

(ex.) http://loglog.jp/~php/tt/ とか http://www.stackasterisk.jp/tech/php/php02_01.jsp とか・・

#私はオンラインマニュアルのサンプルを参考にすることが多いです。

なお「最後にアップロードされたファイル」を表示したいだけであれば(過去の画像が不要であれば)保存するファイル名は固定にして「アップロードされた元ファイル名」をテキストとして添えるのが無難じゃないでしょうか?

[ メッセージ編集済み 編集者: shimix 編集日時 2007-04-06 01:33 ]
kiyo
会議室デビュー日: 2006/12/15
投稿数: 8
投稿日時: 2007-04-06 03:28
[quote]
shimixさんの書き込み (2007-04-06 01:21) より:
[quote]
kiyoさんの書き込み (2007-04-06 00:15) より:
画像出力時

<img src="<?php
$file = fopen("name.txt","r+");
fpassthru($file);
?>">
[/quote]

やってみればわかりますが、多分大丈夫かと思います。あと・・ファイル操作は基本中の基本なので、普通の解説書には必ず出ていると思います。

(ex.) [url=http://loglog.jp/~php/tt/]http://loglog.jp/~php/tt/[/url] とか [url=http://www.stackasterisk.jp/tech/php/php02_01.jsp]http://www.stackasterisk.jp/tech/php/php02_01.jsp[/url] とか・・

#私は[url=http://www.php.net/manual/ja/function.fopen.php]オンラインマニュアル[/url]のサンプルを参考にすることが多いです。

なお「最後にアップロードされたファイル」を表示したいだけであれば(過去の画像が不要であれば)保存するファイル名は固定にして「アップロードされた元ファイル名」をテキストとして添えるのが無難じゃないでしょうか?


ご返信ありがとうございます。

保存するファイル名を固定してでも考えていましたが固定に関してもてこづってしまい
テキストで読み込ませて表示する方法に至っておりました。

ファイル名を固定させる方法に関して何か参考となるサイトなど紹介して頂けたら幸いです。

本当に申し訳ありませんが宜しくお願い致します。



[ メッセージ編集済み 編集者: shimix 編集日時 2007-04-06 01:33 ]
[/quote]

スキルアップ/キャリアアップ(JOB@IT)