@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

画像パスの取得方法

投稿者投稿内容
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-09-25 10:59
引用:

かつのりさんの書き込み (2007-09-25 01:56) より:
IE6で試しましたけど、問題なさそうですよ。



えー。
別の意味で問題アリだなぁ。
IE6だとクライアントのファイル構成がサーバ側に晒されるわけでしょう?

パスはセキュリティ上の懸念から送信されないものだと思っていたけど、
今でもIE6って送信されるんですねぇ。

# 後で検証しようと思っていたら先を越されました
あと一歩
常連さん
会議室デビュー日: 2007/09/23
投稿数: 49
投稿日時: 2007-09-25 14:34
ベルさん、かつのりさん、nagiseさん
ご教授いただきましてありがとうございます

やりたいことは、
登録画面で参照ボタンにより、画像ファイルを指定して、
確認画面で表示し登録するということがしたいのです

パスの情報がなくても可能なのでしょうか

よろしくご教授ください
shimix
ぬし
会議室デビュー日: 2004/08/05
投稿数: 512
お住まい・勤務地: 大分市
投稿日時: 2007-09-25 14:45
引用:

よしくんさんの書き込み (2007-09-25 14:34) より:
やりたいことは、
登録画面で参照ボタンにより、画像ファイルを指定して、
確認画面で表示し登録するということがしたいのです


表示というのはどういうものをイメージされてますでしょうか?確認画面に遷移した時点でファイルはアップロード済みだと思います。単に(参考としての)表示だけならフルパスでなくてもいいと思います。

#inputでtype="file"の場合は初期値指定は出来ないですよね?
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-09-25 14:54
確認のために画像を表示するという動作のために、
パスが仮に存在しても使えません。そもそも別の仕組みが必要です。
サーバからアップロードしたPCのフォルダが覗けると勘違いしていませんか?

アップロード確認を行うためには、一旦アップロードさせます。
アップロードされたファイルは適当な一意な名前を付けて、
サーバ内のどこかに内部保存します。

表示はそのファイルをバイナリのストリームで返す手段を提供して、
<img>タグで表示させるのが常套手段です。
直接webapp以下に配置すると楽ですが、他のユーザからも当然みえます。
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2007-09-25 15:02
IEは7から、Firefoxは2から、Operaは7.5からファイル名のみですね。
ローカルのパスがWeb上へ流れるのを防ぐセキュリティ上の配慮です。

この場合は、アップロードされてきたファイルをテンポラリに保存して表示し、OKなら本来のパスへコピーという作り方が正しいでしょう。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-09-25 15:21
スレ主さんは、
コード:
<img src="file:///c:/img.jpg"/>


こういうコードを生成したかったんでしょうね。
確かにIE6ならファイルがあれば表示されます。

これはサーバにアップされているのではなく、
ブラウザがローカルファイルを表示しているだけなんですが。

どのみち本質的な問題解決の手法ではないので
この方法は諦めた方がよいかと思います。
(IE7は知りませんが、FireFox2では表示できません。)
あと一歩
常連さん
会議室デビュー日: 2007/09/23
投稿数: 49
投稿日時: 2007-09-25 19:43
みなさん

ご教授いただきまして本当にありがとうございます

確認画面では一時ファイルを見る方法で対処いたします
未記入
大ベテラン
会議室デビュー日: 2008/07/11
投稿数: 182
投稿日時: 2008-11-20 00:45
横からすみません。

この方と同じようにファイルのアップロードをAjaxで行おうとしています。AjaxではFileオブジェクトをPOST出来ないようなので、input type="file"でどうにかフルパスを取得したいのですが、何か良い方法はありませんでしょうか?

対応ブラウザはIE6以上、FF3 & Chorome(input type="file"自体おかしいですが) & Safari3 で動作させたいのですが・・。

Javaの1.5で開発してますが、このように対象ファイルを取得しようと考えてます。

File fl = this.getFile();
if (fl == null && this.getFileFileName().length() > 0) {
 fl = new File(this.getFileFileName());
}
if (!fl.exists()) {
 this.setResultMsg("ファイルが存在しません。");
} else if (fl.length() == 0) {
 this.setResultMsg("ファイルサイズが0バイトです。");
}


抽象パス取得で
String abpath = new File(this.getFileFileName()).getAbsolutePath();
fl = new File(abpath);
のようにしてもクライアントのファイルですので特定できないと思うのですが。

横からで申し訳ありませんが、よろしくお願いします。

[ メッセージ編集済み 編集者: 未記入 編集日時 2008-11-20 00:57 ]

アイティメディアの提供サービス

ホワイトペーパー(TechTargetジャパン/閲覧には会員登録が必要です)

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