- PR -

asp.netのファイルダイアログ

投稿者投稿内容
範子
常連さん
会議室デビュー日: 2005/01/15
投稿数: 46
投稿日時: 2005-01-16 01:19
たつごろー様 お世話になります。

>これでだめなら、imageタグのonclickでsubmitすればいけるとおもいますよ。

ほっほんとですか?。うれしー!っていきたいところですが・・・。
すみません初心者なものでちょっと難しいです。勉強不足でごめんなさい。
HTMLコードを書き換えればよいのでしょうか?
範子
常連さん
会議室デビュー日: 2005/01/15
投稿数: 46
投稿日時: 2005-01-16 01:36
たつごろー様 いろいろありがとうございます。

webでしらべているのは、vs.net asp(vb)でして、なかなかこれといったサンプルが見当たらないのです。
>.NET Framework 一般情報リファレンス HtmlInputFile コントロール
も、もっと勉強すれば応用できるのでしょうが、asp.netと、vs.net asp(vb)では私にはかなり違いがありすぎてうまくいかないのです。お恥ずかしいですがお手数おかけしてごめんなさい。
範子
常連さん
会議室デビュー日: 2005/01/15
投稿数: 46
投稿日時: 2005-01-16 02:22
webでアップロードサンプルを見つけましたがうまくうごきませんでした。

先ほどの、
Private Sub ImageButton1_Click(ByVal sender As System.Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles ImageButton1.Click
ImageButton1.ImageUrl = File1.Value
End Sub
これに、
サンプルをうまく組み合わせればよいのですが・・・。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim mybmp As Bitmap = New Bitmap(Server.MapPath("sample.jpeg"))
Response.ContentType = "image/jpeg"
mybmp.Save(Response.OutputStream, Imaging.ImageFormat.Jpeg)
End Sub
範子
常連さん
会議室デビュー日: 2005/01/15
投稿数: 46
投稿日時: 2005-01-16 02:45
これでもだめでした。
「sample.JPEGがありません」とエラーになりました。あらかじめ作っておいたのですが。。。

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim strpath As String = "sample.JPEG"
Response.ContentType = "image/JPEG"
Response.AppendHeader("content-disposition", "filename=""" + strpath + """")
Response.WriteFile(Server.MapPath(strpath))

End Sub
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2005-01-16 03:31
問題というか課題を一つ一つ解決していかないと複雑になってしまいます。
引用:
ImageButton1.ImageUrl = File1.Value

これはクライアントでのパスを指すことになるにすぎないということはOKですか。

「asp.netと、vs.net asp(vb)」って何をさしてるのかよくわかりませんが
たつごろーさんのリンク張ってくれたリファレンスはまさにここでのオハナシの核心だと
思いますよ?

File1がFile fieldを「サーバーコントロールとして実行」したものであればそれが
HtmlInputFileコントロールです。何クラスか、とかは常に意識しましょう。
で、アップロードされたファイルは File1.PostedFile で拾えると思います。
引用:
Dim mybmp As Bitmap = New Bitmap(Server.MapPath("sample.jpeg"))
Response.ContentType = "image/jpeg"
mybmp.Save(Response.OutputStream, Imaging.ImageFormat.Jpeg)

これはアップロードではなくサーバーに既にあるsample.jpegをクライアントに
表示するものだと思いますよ?この流れでいくなら上記のBitmapのnewの行を
Bitmap mybmp = new Bitmap(File1.PostedFile.InputStream);
に変えるとアップロードしたファイルが表示されますが。サーバーに保存したいなら
File1.PostedFile.SaveAs

引用:
これでもだめでした。

あれ?それを書いている.vbファイルと同じフォルダにsample.JPEGがあればちゃんと
表示されるはずですが。これもアップロードとあまり関係なくないですか?
範子
常連さん
会議室デビュー日: 2005/01/15
投稿数: 46
投稿日時: 2005-01-16 10:31
べる様へ。
ご指導ありがとうございます。初心者なもので(^^;。ご迷惑をおかけします。

>問題というか課題を一つ一つ解決していかないと複雑になってしまいます。
>ImageButton1.ImageUrl = File1.Value
>これはクライアントでのパスを指すことになるにすぎないということはOKですか。
●ここはOKです。問題なのはこれをどうやってアップロードするか、ですよね。

>「asp.netと、vs.net asp(vb)」って何をさしてるのかよくわかりませんが
>たつごろーさんのリンク張ってくれたリファレンスはまさにここでのオハナシの核心>だと思いますよ?
●勉強のため本屋さんに行くとasp.netの参考書は沢山あるのですが、vs.net(VisualStudio.net)を使ったwebアプリケーションの参考書がなくて困っています。

>File1がFile fieldを「サーバーコントロールとして実行」したものであればそれが
>HtmlInputFileコントロールです。何クラスか、とかは常に意識しましょう。
●ここらへんの勉強が足りなさそうで反省してます。
ということでやってみましたが、「文字が有効ではありません。」「mybmpが宣言されていません」と表示されます。そもそも(怒られそうですが(><;))アップすべきクライアント側の画像ファイルの指定はどこでされるのでしょうか?

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim mybmp As Bitmap = New Bitmap(File1.PostedFile.InputStream);
Response.ContentType = "image/jpeg"
mybmp.Save(Response.OutputStream, Imaging.ImageFormat.Jpeg)
End Sub

ご迷惑でなかったら、また、教えてください。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2005-01-16 16:24
引用:
>ImageButton1.ImageUrl = File1.Value
>これはクライアントでのパスを指すことになるにすぎないということはOKですか。
●ここはOKです。問題なのはこれをどうやってアップロードするか、ですよね。

この時点でサーバーに渡っています。HtmlInputFile(というかhtmlでいう<input
type="file">)はSubmitすると、[参照]ボタンの横にあるテキストボックスに
書かれているファイルがサーバーに渡されます。(Webサーバーとは別のサーバーに
アップロードしたいという意味でなければ)

引用:
●勉強のため本屋さんに行くとasp.netの参考書は沢山あるのですが、vs.net(VisualStudio.net)を使ったwebアプリケーションの参考書がなくて困っています。

あ、なるほど。あるにはあるんですけどね。これとか↓
http://www.amazon.co.jp/exec/obidos/ASIN/4798006068/249-2941670-7716308
表紙には書いてなくても中身はVS.netを取り扱ってるということもありえますし。

引用:
ということでやってみましたが、「文字が有効ではありません。」「mybmpが宣言されていません」と表示されます。

VBでしたら行末のセミコロンは要りませんよね(あ、私がC#で書いちゃったのか)。
表示されますというのはコンパイルエラーですかね?(それともaspxファイルに
VBコードもうめてあるとか?)
引用:
アップすべきクライアント側の画像ファイルの指定はどこでされるのでしょうか?

上に書いたとおり[参照]の横のテキストボックスです。普通のTextBoxでは書いた
文字列が渡されますがfile fieldの場合はファイルの内容が渡る、というだけのことです。

[ メッセージ編集済み 編集者: べる 編集日時 2005-01-17 20:43 ]
ぢだんだ
会議室デビュー日: 2004/02/23
投稿数: 2
投稿日時: 2005-01-17 23:48
初めまして。

ファイルのアップロードを行うには、
FORMタグに、enctype="multipart/form-data"
を追加してやります。
FORM内に、
<input type="file" id="fileInput" runat="server">
のような記述をします。

ImageButtonやButtonは、PostBack時にSubmitを起こしますので、
ボタンを押したときに、画像データがアップロードされます。

HtmlInputFile にデータがわたっているので、Saveで保存すれば、
サーバに保存できますよ。
ただし、NTFSはセキュリティがかかっていますので、
2000/XPでしたらaspnetユーザに書き込み権限を与えましょう。

セーブした画像を、そのままイメージボタンの画像に指定してやればうまくいくと思います。

// HTML

<form id="Form1" method="post" runat="server" enctype="multipart/form-data">
 <input type="file" runat="server" id="uploadFile">
 <asp:Button id="Button1" runat="server" Text="Button"></asp:Button>
 <asp:ImageButton id="ImageButton1" runat="server"></asp:ImageButton>
</form>

// VB側

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
 Dim filename As String
filename = "c:\\image\\post.jpg"
uploadFile.PostedFile.SaveAs(filename)
ImageButton1.ImageUrl = filename
End Sub

こんなかんじでしょうか?

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