C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[11]: ファイルアップロードのサイズチェックについて


(過去ログ 126 を表示中)

[トピック内 24 記事 (1 - 20 表示)]  << 0 | 1 >>

■75217 / inTopicNo.1)  ファイルアップロードのサイズチェックについて
  
□投稿者/ 鏡月 (17回)-(2015/03/06(Fri) 17:15:16)

分類:[ASP.NET (VB)] 

お世話になっております。

ASP.NETでFileUploadを使用し、サーバー側にファイルをアップロードしようとしております。
サーバー側にファイルをアップする前に参照したファイルのサイズチェックを行い1MB以上ならメッセージを出力したい思っているのですがどのようにしてチェックすればよろしいのでしょうか。


引用返信 編集キー/
■75222 / inTopicNo.2)  Re[1]: ファイルアップロードのサイズチェックについて
□投稿者/ WebSurfer (513回)-(2015/03/06(Fri) 21:01:13)
No75217 (鏡月 さん) に返信

> サーバー側にファイルをアップする前に参照したファイルのサイズチェックを行い1MB以上なら
> メッセージを出力したい思っているのですがどのようにしてチェックすればよろしいのでしょうか。

それは ASP.NET には関係なくて、クライアント側だけで JavaScript / jQuery
などを使って行う話ですよね。

以下のような方法があるようです。(未検証ですが)

How to check file input size with jQuery?
http://stackoverflow.com/questions/1601455/how-to-check-file-input-size-with-jquery

他にも file upload get file size などをキーワードにググるといくつか参考
になる記事がヒットすると思いますので、やってみてください。
引用返信 編集キー/
■75223 / inTopicNo.3)  Re[2]: ファイルアップロードのサイズチェックについて
□投稿者/ 鏡月 (18回)-(2015/03/06(Fri) 21:11:33)
No75222 (WebSurfer さん) に返信
> それは ASP.NET には関係なくて、クライアント側だけで JavaScript / jQuery
> などを使って行う話ですよね。
→WebSurfer さん回答ありがとうございます。
 最初に書くのを忘れてしまったのですができればサーバー側で対応したいのと思っております。

> 以下のような方法があるようです。(未検証ですが)
>
> How to check file input size with jQuery?
> http://stackoverflow.com/questions/1601455/how-to-check-file-input-size-with-jquery
>
> 他にも file upload get file size などをキーワードにググるといくつか参考
> になる記事がヒットすると思いますので、やってみてください。
→キーワード及び参考URLありがとうございます。
 サーバー側で行うのが不可能な場合、クライアント側で対応したと思います。
引用返信 編集キー/
■75224 / inTopicNo.4)  Re[3]: ファイルアップロードのサイズチェックについて
□投稿者/ WebSurfer (514回)-(2015/03/06(Fri) 21:57:20)
No75223 (鏡月 さん) に返信

>  最初に書くのを忘れてしまったのですができればサーバー側で対応したいのと思っております。

え? 最初に質問に「サーバー側にファイルをアップする前に」と書いてあったんですが・・・

それはともかく、「サーバー側で対応」ということであれば、まず MSDN ライブラリを読む
ことをお勧めします。「ASP.NETでFileUploadを使用し」ということでしたら、まず FileUpload
を見るといろいろサンプルが出ています。

FileUpload クラス
https://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.fileupload(v=vs.110).aspx

その中に FileUpload.PostedFile.ContentLength を使って制限するサンプルが見つかるはずです。

#質問する際には最初に自分の開発環境(OS, .NET のバージョンなど)を書いていただくようお
 願いします。

引用返信 編集キー/
■75225 / inTopicNo.5)  Re[3]: ファイルアップロードのサイズチェックについて
□投稿者/ Azulean (446回)-(2015/03/06(Fri) 22:13:44)
No75223 (鏡月 さん) に返信
>  最初に書くのを忘れてしまったのですができればサーバー側で対応したいのと思っております。

クライアント側で工夫しない場合、クライアントからサーバーにすべてデータを送った後にエラー表示という形、あるいはサイズエラーではなく強制切断みたいに、ユーザビリティが下がるような対応になりますが、それを求めていますか?
引用返信 編集キー/
■75227 / inTopicNo.6)  Re[4]: ファイルアップロードのサイズチェックについて
□投稿者/ 鏡月 (19回)-(2015/03/07(Sat) 10:53:00)
No75224 (WebSurfer さん) に返信
> ■No75223 (鏡月 さん) に返信
>
>> 最初に書くのを忘れてしまったのですができればサーバー側で対応したいのと思っております。
>
> え? 最初に質問に「サーバー側にファイルをアップする前に」と書いてあったんですが・・・
→書き方が非常に悪かったと感じております。
 サーバー側でファイルサイズを確認してOKならそのままアップロードダメならアップロードの中止をし、メッセージの出力のことです。
 誤解を招く記載方法をして誠に申し訳ございません。

> それはともかく、「サーバー側で対応」ということであれば、まず MSDN ライブラリを読む
> ことをお勧めします。「ASP.NETでFileUploadを使用し」ということでしたら、まず FileUpload
> を見るといろいろサンプルが出ています。
>
> FileUpload クラス
> https://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.fileupload(v=vs.110).aspx
>
> その中に FileUpload.PostedFile.ContentLength を使って制限するサンプルが見つかるはずです。
>
> #質問する際には最初に自分の開発環境(OS, .NET のバージョンなど)を書いていただくようお
>  願いします。
→参考URLありがとうございます。
 また、情報不足の質問してしまい申し訳ございません。

今更ですが下記の環境で開発しております。
OS:Windows7 x64
Frame work:4
Vistual Studio:2013
IIS:7

引用返信 編集キー/
■75228 / inTopicNo.7)  Re[4]: ファイルアップロードのサイズチェックについて
□投稿者/ 鏡月 (20回)-(2015/03/07(Sat) 10:58:07)
No75225 (Azulean さん) に返信
> クライアント側で工夫しない場合、クライアントからサーバーにすべてデータを送った後にエラー表示という形、あるいはサイズエラーではなく強制切断みたいに、ユーザビリティが下がるような対応になりますが、それを求めていますか?
→サーバー側でサイズチェックを行うとそんなことが起きるんですね・・・

>クライアントからサーバーにすべてデータを送った後にエラー表示という形
→すべてデータを送った後の場合、サーバー側の処理でサイズチェックを行いエラーを出す時に正常にエラーメッセージを出力することは可能でしょうか。
引用返信 編集キー/
■75229 / inTopicNo.8)  Re[5]: ファイルアップロードのサイズチェックについて
□投稿者/ WebSurfer (515回)-(2015/03/07(Sat) 11:39:35)
No75227 (鏡月 さん) に返信

> サーバー側でファイルサイズを確認してOKならそのままアップロードダメなら
> アップロードの中止をし、メッセージの出力のことです。

ASP.NET に限らず、Web アプリでそのようなことはできません。

「サーバー側でファイルサイズを確認」するためには、サーバーにファイルがア
ップロードされた後(あくまでも「後」)でないと何ともならないのは理解でき
るでしょうか?

アップロードをする「前」にファイルサイズをチェックするには、クライアント
側で(あくまで「クライアント側」で) JavaScript / jQuery や HTML5 File
API 等を使って行うほかありません。


そもそも、Web アプリにおいて、クライアント側で起こっていることとサーバー
側で起こっていることの区別が付いているでしょうか?

Web アプリはステートレスということは理解されているでしょうか?

Web サーバーからファイルをアップロードするための画面(html ソース)がブ
ラウザに送られた後、Web サーバーはその画像を生成するためにメモリにロード
したコード / データを直ちに削除します。その後は、クライアントが何らかの
要求を送るまで、Web サーバーはクライアントで何が起こっているかなんてこと
は一切関知しません。

ASP.NET Web Forms では、サーバーコントロール、ビューステート、ポストバッ
クという仕組みを使って、一見ステートフルなような振る舞いを実現しています
が、本質的には他の Web アプリと同様にステートレスです。

Web アプリ開発においては、クライアント側で起こっていることとサーバー側で
起こっていることの区別、Web アプリはステートレスということを常に意識しな
いと、何度も同じ問題に遭遇して悩むことになります。

今後の開発をスムーズに進めるために、そのあたりを勉強して理解されることを
お勧めします。

引用返信 編集キー/
■75230 / inTopicNo.9)  Re[5]: ファイルアップロードのサイズチェックについて
□投稿者/ Azulean (447回)-(2015/03/07(Sat) 11:42:56)
No75228 (鏡月 さん) に返信
> >クライアントからサーバーにすべてデータを送った後にエラー表示という形
> →すべてデータを送った後の場合、サーバー側の処理でサイズチェックを行いエラーを出す時に正常にエラーメッセージを出力することは可能でしょうか。

方法論については、WebSurfer さんがすでにアドバイスされていると思います。

ただ、10分かけてデータを送ってサイズエラーと言われたら、あなたはどう思いますか?
そういう意味で、ユーザビリティが悪いと書いたのです。
引用返信 編集キー/
■75231 / inTopicNo.10)  Re[5]: ファイルアップロードのサイズチェックについて
□投稿者/ WebSurfer (516回)-(2015/03/07(Sat) 11:43:08)
No75228 (鏡月 さん) に返信
> ■No75225 (Azulean さん) に返信

> >クライアントからサーバーにすべてデータを送った後にエラー表示という形
> →すべてデータを送った後の場合、サーバー側の処理でサイズチェックを行いエラーを出す時に正常にエラーメッセージを出力することは可能でしょうか。

それは先の私のレスで回答しているつもりなのですが、目的に合わないのでしょうか?

目的に合わなければ、具体的にどこが問題かを詳しく書いていただければ、別の案を考
えてみますが。
引用返信 編集キー/
■75233 / inTopicNo.11)  Re[6]: ファイルアップロードのサイズチェックについて
□投稿者/ 鏡月 (21回)-(2015/03/07(Sat) 16:16:28)
No75229 (WebSurfer さん) に返信
> ■No75227 (鏡月 さん) に返信
>
>>サーバー側でファイルサイズを確認してOKならそのままアップロードダメなら
>>アップロードの中止をし、メッセージの出力のことです。
>
> ASP.NET に限らず、Web アプリでそのようなことはできません。
>
> 「サーバー側でファイルサイズを確認」するためには、サーバーにファイルがア
> ップロードされた後(あくまでも「後」)でないと何ともならないのは理解でき
> るでしょうか?
>
> アップロードをする「前」にファイルサイズをチェックするには、クライアント
> 側で(あくまで「クライアント側」で) JavaScript / jQuery や HTML5 File
> API 等を使って行うほかありません。
>
>
> そもそも、Web アプリにおいて、クライアント側で起こっていることとサーバー
> 側で起こっていることの区別が付いているでしょうか?
>
> Web アプリはステートレスということは理解されているでしょうか?
>
> Web サーバーからファイルをアップロードするための画面(html ソース)がブ
> ラウザに送られた後、Web サーバーはその画像を生成するためにメモリにロード
> したコード / データを直ちに削除します。その後は、クライアントが何らかの
> 要求を送るまで、Web サーバーはクライアントで何が起こっているかなんてこと
> は一切関知しません。
>
> ASP.NET Web Forms では、サーバーコントロール、ビューステート、ポストバッ
> クという仕組みを使って、一見ステートフルなような振る舞いを実現しています
> が、本質的には他の Web アプリと同様にステートレスです。
>
> Web アプリ開発においては、クライアント側で起こっていることとサーバー側で
> 起こっていることの区別、Web アプリはステートレスということを常に意識しな
> いと、何度も同じ問題に遭遇して悩むことになります。
>
> 今後の開発をスムーズに進めるために、そのあたりを勉強して理解されることを
> お勧めします。
→大変申し訳ございませんがそこまで詳しいというわけではありません。
 .NETの開発はやったことがあるのですが、ASP.NETの開発は今回が初めてなものでデータのやりとりが
 どのようになっているかWebSurfer さんの説明で理解することが出来てきました。
 とりあえず、落ち着きましたら勉強をしたいと思います。
引用返信 編集キー/
■75234 / inTopicNo.12)  Re[6]: ファイルアップロードのサイズチェックについて
□投稿者/ 鏡月 (22回)-(2015/03/07(Sat) 16:17:59)
No75230 (Azulean さん) に返信
> ただ、10分かけてデータを送ってサイズエラーと言われたら、あなたはどう思いますか?
> そういう意味で、ユーザビリティが悪いと書いたのです。
→Azulean さんの言う通り確かにその通りですね。
 だんだんと理解することが出来てきました。
 ご迷惑をお掛けして申し訳ございません。
引用返信 編集キー/
■75235 / inTopicNo.13)  Re[6]: ファイルアップロードのサイズチェックについて
□投稿者/ 鏡月 (23回)-(2015/03/07(Sat) 16:21:02)
No75231 (WebSurfer さん) に返信
> 目的に合わなければ、具体的にどこが問題かを詳しく書いていただければ、別の案を考
> えてみますが。
→まだ作成に時間が掛っておりますので少々お待ちください。
 いろいろと気にかけて下さってありがとうございます。
 作成が完了または、作成途中に不明点が出てきた場合、改めてご連絡いたします。

引用返信 編集キー/
■75237 / inTopicNo.14)  Re[7]: ファイルアップロードのサイズチェックについて
□投稿者/ 鏡月 (24回)-(2015/03/07(Sat) 18:08:30)
少しわからないことがありますのでヒントを頂けると嬉しいのですがよろしいでしょうか。

クライアント側でファイルのサイズチェックを行う場合は
<input type="file" id="myFile" />を使用すればよろしいのでしょうか。
<asp:FileUpload>タグではクライアント側でファイルチェックを行うことが出来ないのでしょうか。

大変初歩的な質問になってしまい申し訳ございませんl。
引用返信 編集キー/
■75238 / inTopicNo.15)  Re[8]: ファイルアップロードのサイズチェックについて
□投稿者/ WebSurfer (517回)-(2015/03/07(Sat) 20:03:21)
No75237 (鏡月 さん) に返信
> 少しわからないことがありますのでヒントを頂けると嬉しいのですがよろしいでしょうか。
>
> クライアント側でファイルのサイズチェックを行う場合は
> <input type="file" id="myFile" />を使用すればよろしいのでしょうか。
> <asp:FileUpload>タグではクライアント側でファイルチェックを行うことが出来ないのでしょうか。

話が通じてないように思います。上の質問者さんのレスを読むと、先に私が書いたことは
ほとんど理解されてないようですし、書いてあることが、失礼を承知で分かりやすい言葉
で言わせてもらえると、支離滅裂です。

結局どうしたいのですか? 細かい技術的なことはともかく、全体的なシナリオとして何
がやりたいのか書いてください。
引用返信 編集キー/
■75240 / inTopicNo.16)  Re[9]: ファイルアップロードのサイズチェックについて
□投稿者/ 鏡月 (25回)-(2015/03/08(Sun) 15:51:05)
No75238 (WebSurfer さん) に返信
大変申し訳ございません。
やりたいことはサーバーにファイルをアップロードする際にファイルのサイズをクライアント側でチェックし、
容量が大きい場合はメッセージを出力したいと考えております。

現在使用しているコントロールは<asp:FileUpload>を使用しファイルのアップロード処理までは完了しております。

引用返信 編集キー/
■75242 / inTopicNo.17)  Re[10]: ファイルアップロードのサイズチェックについて
□投稿者/ WebSurfer (518回)-(2015/03/08(Sun) 16:25:54)
No75240 (鏡月 さん) に返信

話が堂々巡りになっているような気がしますが・・・

> やりたいことはサーバーにファイルをアップロードする際にファイルのサイズをクライアント側でチェックし、
> 容量が大きい場合はメッセージを出力したいと考えております。

それは一番最初の回答で書いたとおりです。

FileUpload はサーバー側の話です。一番最初の回答で紹介した記事にある <input type="file" ... は
クライアント側の話です。

> 現在使用しているコントロールは<asp:FileUpload>を使用しファイルのアップロード処理までは完了しております。

とのことですので、そのページをブラウザに表示して html ソースを見てください。<asp:FileUpload> は
html ソースでは <input type="file" ... になっているはずです。

なので、クライアント側でその html ソースの <input type="file" ... を JavaScript / jQuery で操作
してファイルサイズをチェックすることになります。それが一番最初の回答で紹介した記事です。

なお、HTML5 File API をサポートしているブラウザでないとダメです。それは紹介した記事にも書いてあ
るので読んでください。(IE9 以下ではダメです)

また、クライアント側だけでチェックするのは、JavaScript を無効にされるとどうにもならなくなります。
なのでサーバー側でのチェックは必須です。

JavaScript の知識がないと、上記の情報だけではどうしたらよいか分からないと思いますが、ある程度は
知識をつけてからでないと掲示板では話が通じませんので、まずは少し JavaScript を勉強してください。

それから不明点を聞いていただければ分かる範囲で回答します。
引用返信 編集キー/
■75253 / inTopicNo.18)  Re[10]: ファイルアップロードのサイズチェックについて
□投稿者/ PANG2 (70回)-(2015/03/09(Mon) 10:13:02)
No75240 (鏡月 さん) に返信
> ■No75238 (WebSurfer さん) に返信
> 大変申し訳ございません。
> やりたいことはサーバーにファイルをアップロードする際にファイルのサイズをクライアント側でチェックし、
> 容量が大きい場合はメッセージを出力したいと考えております。
>
> 現在使用しているコントロールは<asp:FileUpload>を使用しファイルのアップロード処理までは完了しております。
>

FileUpload1.Attributes["onchange"] = "if (event.target.files[0].size >= 1048576) {alert('too big');this.value='';}";

引用返信 編集キー/
■75257 / inTopicNo.19)  Re[11]: ファイルアップロードのサイズチェックについて
□投稿者/ 鏡月 (26回)-(2015/03/09(Mon) 13:28:59)
No75242 (WebSurfer さん) に返信
> また、クライアント側だけでチェックするのは、JavaScript を無効にされるとどうにもならなくなります。
> なのでサーバー側でのチェックは必須です。
>
> JavaScript の知識がないと、上記の情報だけではどうしたらよいか分からないと思いますが、ある程度は
> 知識をつけてからでないと掲示板では話が通じませんので、まずは少し JavaScript を勉強してください。
>
> それから不明点を聞いていただければ分かる範囲で回答します。
→JavaScript の知識があまりにも少なすぎるため、一度勉強をして分からなかった場合、再度ご質問させて頂きます。
 ご迷惑をお掛けして誠に申し訳ございません。
引用返信 編集キー/
■75258 / inTopicNo.20)  Re[11]: ファイルアップロードのサイズチェックについて
 
□投稿者/ 鏡月 (27回)-(2015/03/09(Mon) 13:30:44)
No75253 (PANG2 さん) に返信
> FileUpload1.Attributes["onchange"] = "if (event.target.files[0].size >= 1048576) {alert('too big');this.value='';}";
→PANG2 さん回答ありがとうございます。
 Javascriptを勉強してから上記のコードについて試させて頂きます。
 せっかく教えて頂いたのに申し訳ございません。
解決済み
引用返信 編集キー/

次の20件>
トピック内ページ移動 / << 0 | 1 >>

管理者用

- Child Tree -