BASPでのファイルアップロード

このQ&Aのポイント
  • win2000でBASPを使って、ファイルのアップロードを行うプログラムを製作しています。IEやネスケ4.7などのブラウザで正常に動作させたいですが、自分だけでは解決できません。
  • ファイルのアップロード作業部分の一部を表示しています。二つ目のASPファイルで必要最低限のアップロード作業を行っていますが、ファイルアップロードが失敗してしまいます。
  • 質問内容が分かりづらくて申し訳ありません。分かる範囲でのご協力をお願いします。
回答を見る
  • ベストアンサー

BASPでのファイルアップロード

お世話になります。 win2000でBASPを使って、ファイルのアップロードを行うプログラムを製作しています。 一つ目のASPファイルでアップロードするファイルを選択し、 これをSubmitして二つ目のASPファイルでファイルアップロード作業をするものです。 ネスケ6.2ではformsaveasが正常に動作したのですが、IEやネスケ4.7などではformsaveasが上手く働いてくれません(後述)。 できることなら保有するブラウザ全てで正常に動かしたいです。 しかし色々試したり調べたりしましたがどうしても自分だけの力では無理でした。 下記で二つ目のASPファイルで行う必要最低限のアップロード作業部分を載せました。 他にも載せようとしたら文字数オーバーだったので、ご容赦ください。 この保存作業部分で明らかに足りない何かがあったりしたら、そこをご指摘いただければ助かります。 Datasize = Request.TotalBytes B_Data = Request.BinaryRead(Datasize) Set objB = Server.CreateObject("basp21") strPath= "C:\test\" strname = objB.formfilename(b_data,"f_file") errno = objB.formsaveas(b_data,"f_file",strpath & strname) (この時点でerrnoに-3の値が入ってしまう=ファイルアップロード失敗) 読みづらい、分かりにくい質問で申し訳ないです。 分かる範囲でけっこうですので、ご協力よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • itohh
  • ベストアンサー率45% (210/459)
回答No.1

こんにちは。itohhといいます。 >Datasize = Request.TotalBytes >B_Data = Request.BinaryRead(Datasize) >Set objB = Server.CreateObject("basp21") >strPath= "C:\test\" >strname = objB.formfilename(b_data,"f_file")         <--(1) >errno = objB.formsaveas(b_data,"f_file",strpath & strname) (1) ここでブラウザで指定したファイル名を取得していますが、フルパス名になってしまいますよ。 例。 ブラウザで「C:\test1\test.txt」と指定した場合。 strnameには、「C:\test1\test.txt」が設定されてしまうと思うのですが。 変更例。 fname=objB.FormFileName(B_Data,"f_file") strname=Mid(fname,InstrRev(fname,"\")+1) strnameには、「test.txt」が設定される。 BASP21の公式サイトはご存じですか? もし、この後、判らないことが起きたらそちらの掲示板に質問をしてみては如何でしょうか? URL:http://www.hi-ho.ne.jp/babaq/

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

お礼

ご指摘の通りに修正したところ、しっかり動作するようになりました! >BASP21の公式サイト お恥ずかしいかぎりですが、知りませんでした……。 勉強を兼ねて、そちらの方も色々とチェックしていきたいと思います。 本当に助かりました、 場違いな質問でしたが丁寧に答えていただいてどうもありがとうございます。 では失礼します。

関連するQ&A

  • BASP21のアップロードについて

    現在、BASP21を用いたファイルのアップロードを行うプログラムを作っております。 そこで困ったことがあり、質問させていただきます。 作成しているプログラムでは、ASPでBASP21(Proではない)を用いて大きなサイズのファイル(動画ファイルなど、最大で約250MB程度のファイル)をアップロードしたいと考えております。 しかしながら、50MB程度であればアップロード可能なのですが、70MB超のファイルになってくると「関数が|を返しました。」というエラーが発生してしまいます。 どうも、 ------------------------------------------------------ <% fbin=Request.Totalbytes barray=Request.BinaryRead(fbin) … … %> ------------------------------------------------------ の「barray=Request.BinaryRead(fbin)」の部分でエラーが出ているようでした。 これは、BASP21のアップロード上限をオーバーしているためのエラーなのでしょうか? そこで、このエラーの解決策、もしくはBASP21(Proではない)での最大約250MB程度のファイルをアップロードする他の方法があれば教えていただきたく、書き込みさせていただきました。 (フリーで使うことのできる、BASP21以外を用いた方法でも構いません!) 質問にお答えいただけると幸いです。 よろしくお願いいたします。

  • ファイルのアップロードについて

    初めて投稿させていただきます。 今、WindowsNT4.0+SP6,IIS+ASPでファイルのアップロードを考えています。 調査している中で、basp21を使用してファイルをアップロードするところまでわかったのですが、その後すこしつまずいています。 basp21を使用してファイルを送信する場合、HTML上に<input type="file" name="strName">というタグを明記し、ファイルを送信する場合には、このタグに該当するファイルの絶対パスを明記するとは思うのですが、これを固定のファイル名にしたいのです。 試したこととして<input type="file" name="strName" value="c:\test.text">という形で明記しましたが、表示されませんでした。 ブラウザーはIE6.0およびNetscape 6.1を使用しております。 よろしくお願いします。

  • BASP21のファイルアップロードでエラー

    IIS7.0の環境にBASP21をインストールして、ブラウザからのファイルアップロードを処理しようとしています。BASP21は、BASP21-2003-0211.exe をインストールしました。 症状は、ブラウザ(MSIE 7.0.5730.13)からファイルアップロードをすると、うまくいくときもあるし、うまくいかないときもあるという感じです。 うまくいくときは FormSaveAs でファイルが保存され、そのファイルを読み出して処理することができます。 うまくいかないときは FormSaveAs が -2(名前が見つかりません)を返し、ファイルが保存されません。 HTMLのフォームの部分は以下のようになっています。 <form enctype="multipart/form-data" method=POST action="upload1.asp"> <input type="hidden" name="MAX_FILE_SIZE" value="3000000"> ファイル名:<input type="file" name="userfile" size="60"><br /> <input type="submit" value="ファイルを送信"><br /> </form> 同じファイルを何度も送信して試してみたところ、a = Request.TotalBytes のところで、a にセットされる値が変わることがわかりました。 テストに使ったファイルでは、うまくいくときは 818 になり、うまくいかないときは 821 になりました。ファイルそのものは 413 バイトなので、付加されるヘッダ情報に違いがあるのではないかと思いました。 そこで、パケットモニタを使用して送信されるデータを見てみたところ、boundary= の後ろに指定される文字の長さによって動きが変わってくるように見えました。 マイナス連続の後ろが 7d934f3211530(13文字)→NG マイナス連続の後ろが 7d9274d11530(12文字)→OK 送信フォームの中にはパーツが2つあり、末尾のboundaryも含めて3つになりますので、1文字違うと合計で3バイト違ってきますので計算は合います。 このあたりの情報は、どこかにないでしょうか?BASP21の使い方が悪いのか、HTMLやASPの書き方が悪いのか、わからないので困っています。

  • ファイルのアップロードをできるだけ高速に行いたい!

    IIS5.0 + ASP(VBScript)で、BASP21を使ってファイルをアップロードする、イントラネットのサイトを作っています。5~8MB程度のファイルをアップロードするのですが、どうも Request.BinaryRead で数十秒程度の時間がかかっています。これを短縮するには、分離プロセスを「低」にするか、COMを自作するしかない、という結論に達しました。ちなみに、「低」にすると2~3秒に縮まりました。 そこで、質問なんですが、 (1)サーバのマシンスペック(CPU、メモリ)を上げると、さらに(「中」以上の設定でも)高速になりますか? (2)他のスクリプト言語を使うと、高速になりますか? (3)ASP.NET にするのは賢明でしょうか? よろしくお願いします。

  • VB2005でBASP21が使えません

    BASP21のFORMメソッドを使用し、次のような構文でHTMLのタグを読もうとしています。 dim a, b, obj as Object set obj = Createobject("basp21") a = Request.TotalBytes b = Request.BinaryRead(a) str = obj.Form(b,"name") 同じようなコーディングでVB6.0ではタグ<name>の文字列が取得出来て、VB2005では出来ません。 VB2005のコーディングが違うのでしょうか。

  • ファイルのアップロード

    ASPを使って、ローカルPCにあるファイルをアップロードする方法を教えてください。 サーバの管理者が私ではないので、BASPなど、サーバー側にインストールが必要なものが利用できません。 それ以外の方法を使って、サーバにデータを送る方法を教えていただけますでしょうか。

  • 複数ファイルのアップロードについて

    お世話になります。 現在aspで、前画面で指定されたファイルのアップロードを行っています。 単一ファイルの場合、前画面で <input type=file name=upfile>で指定したファイルを Basp21をのFormSaveAsを利用してアップロードしているのですが、 複数ファイルをアップロードする必要がありまして、 現在ファイルの選択にはselectボックスを利用しています。 selectボックスに指定されたファイルパスは取得できているのですが、typeがfileではないのでアップロードが出来なくなってしまいます。 どうにか他の手で解消できないでしょうか? DFILEUPも同じくダメでした。。。 ご存知の方、ご助言お願いします。 --環境-- winXP asp IIS --------

  • 【BASP21+ASP】MDEファイルがDL出来なくなった

    いつもお世話になっております。 IIS+VBSで、サーバーに上げたファイルを各自の端末でダウンロード出来る ページを作成しています。 例えば、クライアントで <a href="download.asp?FILE=見積書.xls">見積書</a> をクリックすると、download.aspに変数FILE(見積書.xls)が 渡され、download.asp側でtoolsフォルダ配下の見積書.xlsを ダウンロードする準備を行う、といった具合です。 これまで順調に動いていたのですが、ここ2,3日で急に AccessのMDEファイルがダウンロード出来なくなってしまいました。 本来ならダウンロード確認画面に「XXX.mde」と表示されるはずが、 「download.asp?FILE=XXX_mde」と書き換えられたかのように表示され、 保存しようとしてもエラーになります。 開く を選択するとASPのエラーが表示されるのですが、 BASP21のobjBasp.BinaryReadメソッドのところで「特定できないエラー」が 表示されています。 今までMDEファイルもダウンロード出来ましたし、家で同じ環境を構築しても 上手くいったのですが、会社の環境だけこのような事態になっています。 どなたかこの解決方法をご教授願えませんでしょうか? よろしくお願い致します。 (会社、自宅とも、WinXP+IIS6です) ---------------download.asp のソース-------------- Dim dat Dim objBasp Dim fname Dim bydata fname = Request.QueryString("FILE") Response.ContentType = "application/octet-stream;name=" & fname Response.AddHeader "Content-Disposition","attachment;filename=" & fname Set objBasp = Server.CreateObject("Basp21") bydata = objBasp.BinaryRead(Server.MapPath("tools/" & fname)) Response.AddHeader "Content-Length", ubound(bydata) + 1 Response.BinaryWrite bydata Set objBasp = Nothing -------------------------------------------------------

  • BASP21を利用してリネームファイルアップロード

    Set basp = Server.CreateObject("basp21") を利用して、 FilePath = Server.MapPath("../pictures") & "\" & GyoushaBangou & "\" & FilePath leng = basp.FormSaveAs(postData,"UpFile",FilePath) のプログラムを使って、ファイルアップをしてます。 ローカルのデータ画像のアップに際して、同じ画像を上げる事が無いように、ファイル名に日付けなどを付け加え、名前を変えて同じ名前のファイルを上げる事が無いようにしたいのです。 現在の仕組みでは、リネームされない状態でアップロード出来て、アップロードした名前はデータベースに記録されるようになっています。 出来る方法を教えていただけないでしょうか! よろしく、お願いします。

  • ファイルのアップロードで・・・・

    ファイルバンクやYahoo!ブリーフケースで大きい容量のファイルをアップロードしようとしたら、 次のようなエラーメッセージが出てできません。どうすればいいのでしょうか? --------------------------------------------------- エラー リクエストされた URL は取得できませんでした 以下の URL を取得した際に: http://www.filebank.co.jp/cgi-bin/folder/file_up_process.cgi 次のエラーが発生しました: * 送信処理中にエラーが発生しました. システムが以下のエラーを返しました: (32) Broken pipe ネットワークへデータを送信している間にエラーが発生しました.再度リクエストしてください. ---------------------------------------------------

専門家に質問してみよう