- PR -

【ASP.NET】リストボックスによるアップロードについて

投稿者投稿内容
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-05-29 10:44
引用:

ひろれいさんの書き込み (2006-05-29 10:21) より:

こちらにつきましては、やはり、「アップロード」ボタンが押された SaveAs時にサーバ側へアップロードされます。クイックウォッチで確認したので間違いありません。


いや、HTMLの仕組み上そういうことは無いと思うのですが・・・
<input type="file" /> がポストされたときにサーバ側にファイルが
アップロードされて、SaveAsするまではメモリ上に乗っているイメージだと思います

引用:

やはり、変えるなら、べるさんのおっしゃる通り、画面に複数セットしておくしか無いのでしょうか・・・


最初から複数作っておくのではなくて
ボタンを押すと新しい <input type="file" /> が作られるUIは
Webメールなんかでよく見ますね。
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2006-05-29 11:36
引用:

かるあさんの書き込み (2006-05-29 10:44) より:

いや、HTMLの仕組み上そういうことは無いと思うのですが・・・
<input type="file" /> がポストされたときにサーバ側にファイルが
アップロードされて、SaveAsするまではメモリ上に乗っているイメージだと思います


なるほど! そういうことですね。それなら、納得です。
見た目上しか気にしていなかったもので、てっきり SaveAs時に行なわれているものと思っていました。

引用:

最初から複数作っておくのではなくて
ボタンを押すと新しい <input type="file" /> が作られるUIは
Webメールなんかでよく見ますね。


なるほど、です。確かに、そういう UI ありますね。
しかし、UI を変えることは難しいので、今回は無理っぽいです・・・

今は「追加」時に SaveAs してしまうことで回避しようと考えております。
業務的にはクリアできそうですが、ファイルの削除タイミングが難しいのですけどね。

みなさん、ご迷惑をお掛けし、申し訳ありませんでした。
良い勉強になりました。
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2006-05-29 11:42
ひろれいさん、こんにちは。

引用:

こちらにつきましては、やはり、「アップロード」ボタンが押された SaveAs時にサーバ側へアップロードされます。クイックウォッチで確認したので間違いありません。



えーっとですね、「アップロード」という言葉の定義を「サーバのファイルシステムへのファイルイメージ格納まで」とするなら、まあ、そうなのかも知れませんが、データ自体は、サーバに送りつけられている筈ですよ(普通はこれを「アップロード」というような気がします)。

「追加」ボタンのクリック・イベントハンドラあたりで PostedFile.InputStream を覗いてみて下さい。ちゃんと Length も取れてませんか?

【追記】
既に収束していたんですね…。


[ メッセージ編集済み 編集者: きくちゃん 編集日時 2006-05-29 11:55 ]
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2006-05-29 12:01
引用:

きくちゃんさんの書き込み (2006-05-29 11:42) より:

えーっとですね、「アップロード」という言葉の定義を「サーバのファイルシステムへのファイルイメージ格納まで」とするなら、まあ、そうなのかも知れませんが、データ自体は、サーバに送りつけられている筈ですよ(普通はこれを「アップロード」というような気がします)。

「追加」ボタンのクリック・イベントハンドラあたりで PostedFile.InputStream を覗いてみて下さい。ちゃんと Length も取れてませんか?

【追記】
既に収束していたんですね…。


はい。たった今、filGet1.PostedFile の中身を「追加」ボタン押下時に確認しました。
おっしゃる通り、サーバ側で取得できていますね。

アップロードの仕組みを理解できておらず、ご迷惑をおかけ致しました。
まさか、メモリ上に情報を取得しており、SaveAs時に実行されるとは思っていませんでしたので(^_^;)

ありがとうございました。
ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2006-05-29 12:06
ひろれいさん、こんにちは〜。

余計な心配事かもしれませんが…
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=30430&forum=7
各ブラウザがセキュリティ対策を行っていく中で、サーバ側でフルパスを取得する処理はいずれ使えなくなりそうです。

あと、ちょっと気になったんですが、
コード:

Dim lo_HIF As System.Web.UI.HtmlControls.HtmlInputFile

For Each lo_HIF In 配列
  ls_FileName = System.IO.Path.GetFileName(lo_HIF.PostedFile.FileName)
  lo_HIF.PostedFile.SaveAs(String.Format(ConfigurationSettings.AppSettings("serverpath")) & ls_FileName)
Next


これ、クライアント側で異なるディレクトリの同じファイル名のファイルを指定されると上書きされちゃいません?

追記:
更によく見るとString.Format要らないですね(^^;

[ メッセージ編集済み 編集者: ぼのぼの 編集日時 2006-05-29 12:08 ]
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2006-05-29 12:57
ぼのぼのさん、こんにちは。

引用:

ぼのぼのさんの書き込み (2006-05-29 12:06) より:

余計な心配事かもしれませんが…
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=30430&forum=7
各ブラウザがセキュリティ対策を行っていく中で、サーバ側でフルパスを取得する処理はいずれ使えなくなりそうです。


むむっ?! 知りませんでした・・・ 有益な情報ですね! ありがとうございます。

では、IE7以降はアップロード方法を見直さないといけないってことですね。
IE6 でも IE7 でも有効なアップロード方法って、現在でもあるのでしょうか?
IE7 の正式版(仕様)待ちって感じでしょうか?

引用:

あと、ちょっと気になったんですが、
コード:
Dim lo_HIF As System.Web.UI.HtmlControls.HtmlInputFile

For Each lo_HIF In 配列
  ls_FileName = System.IO.Path.GetFileName(lo_HIF.PostedFile.FileName)
  lo_HIF.PostedFile.SaveAs(String.Format(ConfigurationSettings.AppSettings("serverpath")) & ls_FileName)
Next


これ、クライアント側で異なるディレクトリの同じファイル名のファイルを指定されると上書きされちゃいません?

追記:
更によく見るとString.Format要らないですね(^^;


そのままだと上書きしますね(^_^;)
ただ、「追加」ボタン押下時に同一ファイル名チェックを行なっているので、実際には上書きしないようになっています。

String.Format は、おっしゃる通りです・・・
ただ、修正箇所が多いので、実害ないし、今のところ、見て見ぬ振りをしているのです(^_^;)
何をフォーマットしようと思ったんだか・・・
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2006-05-29 16:08
引用:

引用:

ぼのぼのさんの書き込み (2006-05-29 12:06) より:

余計な心配事かもしれませんが…
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=30430&forum=7
各ブラウザがセキュリティ対策を行っていく中で、サーバ側でフルパスを取得する処理はいずれ使えなくなりそうです。


むむっ?! 知りませんでした・・・ 有益な情報ですね! ありがとうございます。

では、IE7以降はアップロード方法を見直さないといけないってことですね。
IE6 でも IE7 でも有効なアップロード方法って、現在でもあるのでしょうか?
IE7 の正式版(仕様)待ちって感じでしょうか?
ーマットしようと思ったんだか・・・



甕星さんが紹介してくれているページを見ると、

<INPUT type=file 〜 >

では、ファイル名しか取得できなくなるみたいですね。

じゃあ、Yahoo! とかで出品する際に、確かローカルの画像をアップデート出来たと思いますが、ああいう機能も使えなくなるってことでしょうかね。

大変だ・・・
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2006-05-29 16:23
引用:

<INPUT type=file 〜 >

では、ファイル名しか取得できなくなるみたいですね。

じゃあ、Yahoo! とかで出品する際に、確かローカルの画像をアップデート出来たと思いますが、ああいう機能も使えなくなるってことでしょうかね。

大変だ・・・

確認したわけじゃないしYAHOOの仕様よくしらないですけど。ファイルの内容自体は取得できるでしょう。
「ファイル名しか」というのはローカルでのフルパスが取得できなくなるだけだと思いますよ。

C:¥folder¥file.txt
の「file.txt」は取得できるけど「C:¥folder¥file.txt」は取得できない、みたいに。

#ユーザー名含まれているパス名とか取得されるの、気持ち悪いですしね

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