人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

画像などを受付フォームを使ってメールに添付できるプログラムをPHPで作っています。
今、悩んでいるのは確認画面などを作って画像を確認出来るような仕組みを考えています。
出来れば良いなぁと思っているのは、
ファイルを参照する際に出てくる画像のパソコン内部のパスを確認画面に持って行き<a target="_blank">などを使って確認できればよいなと考えています。
テスクトップのロゴだったら、
C:\Documents and Settings\テスト\デスクトップ\ロゴ.gif
の様なパスを取得したいのですが何か方法は有りませんか?

●質問者: black_kenchan
●カテゴリ:インターネット ウェブ制作
✍キーワード:GIF テスト デスクトップ パス パソコン
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● naka-ji
●0ポイント

http://www.futomi.com/library/mpmailec.html

これなんてどーでしょう。

フリーも版あるようですが、画像の添付が出来たかどうか。


2 ● くいっぱ
●40ポイント

パソコン内部というのはユーザーのパソコンの内部ということでしょうか???


サーバー側にファイルを送る前に確認させたいということであれば、

<input type="file" name="upfile">

なりで、ファイルを選択させた後に、そこで選択されたファイルを画面に表示させたいのであれば、upfileにローカルのパス+ファイル名が格納されているのでonChangeイベントあたりのjsでupfileのvalueなりを取得してaタグのhrefを書き換えてやればでできそうです。

http://www.openspc2.org/JavaScript/ref/event/onChange.htm




PHPでやるとなると、サーバーサイドになってしまうので、

一度サーバーにファイルをあげた後ということになります。

$tmp = $_FILES['upfile']['tmp_name'];

で、サーバー内部のファイル名を取得できるので、これを確認画面表示時することになります。



質問文からだと、前者を実装されたいという要望に感じますが、前者だと、ユーザーのローカルにあるファイルを表示するだけで、画像アップロードが正常に終わったという確認にはならないような気がします。


確認画面のみでユーザのローカルパスを取得したいのであれば、onSubmitのタイミングで、hidden textなどに、ローカルパスの値を受け渡してやるなどの方法も考えることはできますが、ファイルアップロードで失敗するという点を考えれば、ユーザー側のどのファイルを選ぶかという操作性と確実性を担保するのはOSにまかせて、きちんとファイルアップロードができましたよという通信結果を担保してあげたほうがいいかと思います。


webプログラムがActiveXなどユーザのローカルファイル選択にまで操作性を広げた時代もありましたが、セキュリティの問題からこれは時流ではないのかなと・・・。

◎質問者からの返答

$tmp = $_FILES['upfile']['tmp_name'];

で画像を表示する場合はどのようにするのですか?


3 ● くいっぱ
●40ポイント

二回目の回答です。


通常、multipart/form-dataで送られたデータはtmp以下に格納されます。html領域外ですのでいったん、public_html下のユーザが参照可能な領域ににコピーします。


http://www.sakura-pc.jp/php/gd.shtml

http://www.mdn.co.jp/webcre/PHP/Vol26/


このようにworkファイルとしてコピーしたものを表示するということになります。



問題点もあり、これでアップされたデータはtmpに格納されているファイルと異なりセッションが切れても破棄されないので、ごみデータの削除の一文を入れておいたほうがいいかもしれません。

http://php.s3.to/bbs/bbs3.php

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ