- 締切済み
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> 受取側のプログラムがわかりません。 プログラマ初心者です。どうか宜しくお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- Cosmo2007
- ベストアンサー率14% (1/7)
No1です。 objRs.Fields("フィールド名").Value = fileBinary 以外のアップデートはできるのでしょうか? fileBinaryは取得できていますか? fileNameやfileSizeが取得できているか調べてください。
- Cosmo2007
- ベストアンサー率14% (1/7)
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
- Cosmo2007
- ベストアンサー率14% (1/7)
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)をファイルシステムオブジェクトで任意フォルダへコピーしてやればよいと思います。
補足
ご丁寧にありがとうございます。エラーはなくなり商品コード等は取得できました。 これをデータベースに登録するのですがimage型ですが、そのまま update テーブル名 set フィールド名=fileBinary where コード=code で更新すると下記、エラーとなります。バイナリが取得できていないのでしょうか?何度もすいません。 型が一致しません。
- Cosmo2007
- ベストアンサー率14% (1/7)
ASPでのファイルのアップロードなどは、BASE21を使うのが一般的なようです。 下記サイトを一度のぞいてみてください。
補足
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 を呼び出せません。 とエラ-になります。
お礼
解決いたしました。 大変、ありがとうございました。
補足
色々とご親切にありがとうございます。 ご指導のように行ってみたのですが下記エラーとなってりまいます。 私なりに色々調べてやってみたのですが、まだ解決できない状態です。 ADODB.Recordset (0x800A0BB9) 引数が間違った型、または許容範囲外であるか、競合しています。