• 締切済み

WEBフォーム(asp)から画像データをデータベースに更新

WEBフォームから商品コード、画像ファイルを選択して登録ボタンを押したら商品コードをkeyにしてimage型のフィールドに画像データを登録・更新するプログラムを作成しているのでしが、どのようにしたら実現できるのかわからずに困っています。 <入力フォーム> <form name="form1" enctype="multipart/form-data" method="post" action="imageup.asp"> <table width="100%" border="1" cellspacing="3" cellpadding="3"> <tr> <td>商品コード(グループコード)</td> <td>画像ファイル(jpeg)</td> </tr> <tr> <td> <input type="text" name="minor" style="ime-mode:disabled;"> </td> <td> <input type="file" name="file"> </td> </tr> </table> <div align="center"><br> <input type="submit" name="submit" value="登録"> </div> </form> 受取側のプログラムがわかりません。 プログラマ初心者です。どうか宜しくお願いします。

みんなの回答

回答No.4

No1です。 objRs.Fields("フィールド名").Value = fileBinary 以外のアップデートはできるのでしょうか? fileBinaryは取得できていますか? fileNameやfileSizeが取得できているか調べてください。

回答No.3

UPLODE文ではできないかもしれません。 下記方法で試してみてください。 strSelectSQL = "SELECT フィールド名 FROM テーブル名 WHERE コード=code Set objRs = CreateObject("ADODB.Recordset") objRs.Open strSelectSQL, objConn ,2 ,3 ,1 Call objRs.AddNew objRs.Fields("フィールド名").Value = fileBinary objRs.Fields("コード").Value = code Call objRs.Update objRs.Close Set ObjRs = Nothing

koji1023
質問者

お礼

解決いたしました。 大変、ありがとうございました。

koji1023
質問者

補足

色々とご親切にありがとうございます。 ご指導のように行ってみたのですが下記エラーとなってりまいます。 私なりに色々調べてやってみたのですが、まだ解決できない状態です。 ADODB.Recordset (0x800A0BB9) 引数が間違った型、または許容範囲外であるか、競合しています。

回答No.2

No1です Set objBasp = Server.CreateObject("basp21") '送信データを取得 lngPostDataSize = CLng(Request.TotalBytes) binPostData = Request.BinaryRead(lngPostDataSize) fileName = objBasp.FormFileName(binPostData, "file") '画像ファイル名 fileBinary = objBasp.FormBinary(binPostData, "file") '画像のバイナリデータ fileSize = objBasp.FormFileSize(binPostData,"file") / 1024 '画像サイズKBにしてる code = objBasp.Form(binPostData,"code") '商品コード これでとれないでしょうか? 後は画像ファイル(fileBinary)をファイルシステムオブジェクトで任意フォルダへコピーしてやればよいと思います。

koji1023
質問者

補足

ご丁寧にありがとうございます。エラーはなくなり商品コード等は取得できました。 これをデータベースに登録するのですがimage型ですが、そのまま update テーブル名 set フィールド名=fileBinary where コード=code で更新すると下記、エラーとなります。バイナリが取得できていないのでしょうか?何度もすいません。 型が一致しません。

回答No.1

ASPでのファイルのアップロードなどは、BASE21を使うのが一般的なようです。 下記サイトを一度のぞいてみてください。

参考URL:
http://www.hi-ho.ne.jp/babaq/basp21.html
koji1023
質問者

補足

BASE21を使って下記のようにしています。 filename = Request.Form("file") '画像ファイル code = Request.Form("code") '商品コード Dim lngBytes '送信バイト数 Dim valData '取得変数 lngBytes = Request.TotalBytes valData = Request.BinaryRead(lngBytes) Set bobj = Server.CreateObject("basp21") sarray = bobj.FormBinary(valData,filename) すると Request オブジェクト, ASP 0206 (0x80004005) Request.Form コレクションを使用した後は、BinaryRead を呼び出せません。 とエラ-になります。

関連するQ&A

専門家に質問してみよう