- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:BASP21のファイルアップロードでエラー)
BASP21ファイルアップロードでエラーが発生する原因と解決方法とは?
このQ&Aのポイント
- BASP21を使用してIIS7.0の環境でファイルアップロードを行おうとすると、エラーが発生することがあります。
- エラーの症状としては、ファイルの保存がうまく行われず、FormSaveAsが-2を返すことがあります。
- このエラーは、送信データのboundaryの文字列の長さによって発生する可能性があります。長さに気をつけるか、詳しい情報を調べる必要があります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ASPコードを提示してください。 それがないとなんともいえません。 ちなみに、boundaryの字数は一定ではありません。おそらくIEの仕様だと思います。
その他の回答 (1)
- うぃず(@Wizard_Zero)
- ベストアンサー率69% (344/495)
回答No.2
#1 Wizard_Zeroです。 BaspはApplicationから取り出しているのですね。 だとすると次の注意点に触れているかもしれません。 http://www.hi-ho.ne.jp/babaq/basp21.html#0024 [抜粋] 2001.9.11 バージョンよりForm*系メソッドを使う場合は、global.asaで作成した Applicationオブジェクトに保存したBASP21 オブジェクトを使わないでください。 [/抜粋] Applicationに格納したものではなく、新規に作成したクラスで試してみてはいかがでしょうか。 ※念のため修正箇所を。 Set bobj = Application("bobj") ↓ Set bobj2 = Server.CreateObject("Basp21") 以降、bobjを全てbobj2に書き換えてください。
お礼
早速のご回答ありがとうございます。 ASPのコードは以下のようになっています。 ------------------------------------------------------------ Set bobj = Application("bobj") Dim a, b Dim file1, size1, len1 a = Request.TotalBytes b = Request.BinaryRead(a) '一時保存領域にコピーする file1 = bobj.FormFileName(b, "userfile", 0) If(file1 = "")Then Response.Write("【エラーが発生しました】" & vbCrLf) Response.Write("アップロードでエラーが発生しました。<br />" & vbCrLf) Response.Write("しばらく時間をおいてから再度実行してください。<br />" & vbCrLf) Response.End End If size1 = bobj.FormFileSize(b, "userfile") len1 = bobj.FormSaveAs(b, "userfile", targetfile) ------------------------------------------------------------ file1 に何らかのファイル名が返されてくるときは正しく処理できます。正しく処理できていないときは、file1 が空文字列になってしまいます。(len1には-2が返される) boundaryの文字数が変わるのは承知しているのですが、BASP21で受け取れないことがあるのかな?と思いまして。