- - PR -
画像ファイルをサーバへ保存(UpLoad)する方法
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-06-21 12:20
今現在、画像ファイルをサーバへUpLoadする方法について悩んでいます。
下記のソースではまず初めにファイルをbyte型の配列に格納してSQLのパラメータの値に直で入れていますが、これではDBへのUpLoadとなってしまい、サーバへのUpLoadではなくなってしまいます。 try { byte []img = new byte [postedfile.ContentLength]; postedfile.InputStream.Read( img, 0, postedfile.ContentLength); // パラメータとして設定 sqlcmd.Parameters.Add( "@imgdata", SqlDbType.Image).Value = img; } http://www.sqlpassj.org/bunkakai/web/series/ado/01_pr.aspx#f1_11 より転載 今現在、FileField.postedfile.saveas(サーバの絶対パス) で保存していますが、これだとByteコードに変換されずに直でUpすることになってしまいます。 知りたいのは、Byteコードに変換して、もう一度画像ファイルに変換する方法です。 なぜこのような処理をしなければならないかといいますと、再度Page_Loadされても、画像データを保持しておきたいからです。 そして、UpLoad処理に移ったときにByteコードのデータをもう一度画像ファイルに変換してUpLoadを行いたいと思っています。 この方法をご存知の方、ご教授お願いします。 | ||||
|
投稿日時: 2004-06-21 14:05
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=12450&forum=7
これはどうなりました? これとの関連、または違いは? なぜこれだとダメなの? | ||||
|
投稿日時: 2004-06-21 15:43
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=12450&forum=7
との関連は、画像UpLoadだけでなく、画像変換をする必要が出てきたということです。 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=12450&forum=7 で教えていただいたサイトですと、まさにsaveAsで直でUpLoadしており、なおかつ画像変換の方法が書かれていません。 バイナリの画像データから画像ファイルへと変換する方法も知りたいのです。 | ||||
|
投稿日時: 2004-06-21 16:13
今日は
一度byteを経由して、保存したいので有れば下記の様にすれば出来ます。 Stream sm=FileField.postedfile.InputStream; byte[] bt=new byte[sm.Length]; sm.Read(bt,0,bt.Length); 必要ならここでbyte操作 FileStream fs=new FileStream(strFilePath,FileMode.Create,FileAccess.Write); fs.Write(bt,0,bt.Length); fs.Close(); | ||||
|
投稿日時: 2004-06-21 16:26
>rvmxさん
恐らくBitmapクラスを使うと画像ファイル形式(*.jpg, *.png, *.gifなど)を変換できると思うのですが、上記のサンプルソースのどこら辺で使えば良いのでしょうか。 | ||||
|
投稿日時: 2004-06-21 16:55
今日は
byteとの変換と言われていたので、ムリにbyteを経由しましたが、 BitMapで有れば下記の様にすれば出来ます。 Stream sm=FileField.postedfile.InputStream; System.Drawing.Bitmap bm=new Bitmap(sm); bm.Save(サーバの絶対パス,System.Drawing.Imaging.ImageFormat.Jpeg); | ||||
|
投稿日時: 2004-06-21 17:06
>rvmxさん
なるほど そういう方法だったんですか。 どうも、StreamクラスとBitmapクラスを組み合わせて変換する方法がわからなかったのですが、そんなに簡単に出来るとは思いませんでした。 なぜByte経由で書いたのかと言うと、参考になるソースが全てByteだったからです。 試してみます。 | ||||
|
投稿日時: 2004-06-21 18:18
参考:
最初に、 要求仕様: クライアントからサーバに画像ファイルをアップロードする bitmap, jpeg, gif, png で、フォーマットの相互変換を行う と書いておけば、よけいなレス(2004-06-21 14:05〜2004-06-21 16:26)は必要なかったと思います。あなたがABCDという道で考えていても、ACDと、Bの手順を省略する方法があるかもしれません。あるいは、AEDと、まったく別の道筋で考える方が早いかもしれません。 しかし、元の質問文ではABCまでしか書いてありません。その為、よけいな時間がかかっていますし、rvmxさんによけいな手間をかけさせています。 仕事をする上で必要な説明手法だと思いますので、心にとめておいてください。 |
1