このFAQの最新版は、Software ArtisansのWebサイトをご覧ください。


目次


Part I - 質問

  1. RFC1867についての詳細情報はどこで入手できますか

  2. Internet ExplorerはRFC1867をサポートしていますか
  3. IIS 3.0を運用しているISPから仮想サーバー領域を’レンタル’しています。DIIだけを自分のサイトにコピーし、これを使用して開始できますか?
  4. アップロード時に追加フィールドを入手する方法は
  5. SA-FileUpとPosting Acceptorとの違いは何ですか
  6. 完全なUserFilenameパスから、ファイル名(または拡張子)のみを抽出する方法は
  7. アップロード後、すべてうまくいったようですがアップロードしたファイルのコンテンツにファイル名しか含まれていないません。
  8. なぜUploadとともに、Request.Formが使えないのですか
  9. Webサーバーの仮想ルートに相対するディレクトリにアップロードしたファイルを置く方法はありますか?
  10. アップロード時にファイルを暗号化できますか? SA-FileUpとともにSSLを使用できますか
  11. アップロードに権限とセキュリティを設定する方法は
  12. CGIベースのアップロードメカニズムとSA-FileUpとの違いは
  13. FTPベースのアップロードメカニズムとSA-FileUpとの違いは

Part II - エラーメッセージ

  1. HTTP/1.0 501はサポートされていません。

  2. サーバーオブジェクトエラー'ASP 0177:80040154' Server.CreateObject Failed'

  3. エラー"ASP 0115"予期されないエラー - 外部オブジェクト内でtrappableエラーが発生しました。
  4. ファイルの転送中に、ブラウザにより"Network Error"または"Server Connection Reset"がレポートされました。

 


Part I - 質問

RFC1867についての詳細情報はどこで入手できますか?

正式なRFCはhttp://info.internet.isi.edu/in-notes/rfc/files/rfc1867.txt Form-based File Upload in HTMLに記載されています。

最初に戻る


Internet ExplorerはRFC1867をサポートしていますか?

Internet Explorer 4.0は、RFC1867をサポートしています。IE3.02(32ビット)では、標準仕様であるRFC1867(SA-FileUpで使用している)に準拠してファイルアップロードを行うためにはアドオンが必要です。Internet Explorer 3.02A (16ビット)では、このアドオンは必要ありません。

つまり、現在では、あなたのユーザーがNetscapeまたはIEからファイルアップロードが実行できる単一のフォームを使用できるということです。ActiveX Controlや、ブラウザ固有のページを追加する必要はなくなりました。Netscapeでは、フォームを次のように定義してください。

         <FORM ENCTYPE="multipart/form-data" ACTION="formresp.asp" METHOD="POST">
Enter Filename: <INPUT TYPE="FILE" NAME="F1">

          <INPUT TYPE="SUBMIT">
</FORM>

現在、これはInternet Explorerでも使用できます!

Internet Explorerバージョン4には、アドオンなしで、この本来の機能が組み込まれています。ただし、IE 3.02とIE 4とではRFC1867のインプリメンテーションが異なります。 SA-FileUp バージョン2.xおよびこれ以上の製品は、IE 4を使用できます。登録済みのユーザーの皆様は、最新バージョンへのアップグレードが行えます。詳細については弊社までご連絡ください。(メールの場合はsafileup@linkcom.co.jp 電話の場合は03-5246-6711)

Internet ExplorerのRFC1867のサポートには、次のような問題があります。

IEのRFC1867サポートについての詳細は、KB article、Q161395を参照してください。

最初に戻る


IIS 3.0を運用しているISP から仮想サーバー領域を'レンタル'しています。Dllだけを自分のサイトにコピーし、これを使用して開始できますか?

使用しているISPが、あらかじめコンポーネントを登録する必要があります。登録の方法は、手作業でのインストールプロセスの手順2にあります。通常、InstallShieldのセットアップ中に自動で行われます。

最初に戻る


アップロード時に追加フィールドを入手する方法は?

ASPのRequest.Form オブジェクトの代わりに、SA-FileUpバージョン2以上のFormオブジェクト(upl.Form)を利用します。これは、Request.Formと機能的にはまったく同じですが、こちらは、ファイルアップロードの実行時に使用される異なるフォームエンコード スキーマを解釈します。

最初に戻る


SA-FileUpとPosting Acceptorとの違いは何ですか?

以下は、SA-FileUpとMicrosoftのPosting Acceptor (PA)とを客観的に比較した結果です。

最初に戻る


完全なUserFilenameパスから、ファイル名(または拡張子)のみを抽出する方法は?

VBScriptには、長い文字列の後方検索を可能にするInstrRev機能が組み込まれています。この機能を使うと、"\"を使用してファイル名だけを、または、"."を使って拡張子を抽出できます。以下サンプルコードです。

NewFileName = Mid(upl.UserFilename, InstrRev(upl.UserFilename, "\") + 1)
最初に戻る


アップロード後、すべてうまくいったようですがアップロードしたファイルのコンテンツにファイル名しか含まれていません。

この現象は、Internet Explorer 3.02より前のバージョンのように、使用されているブラウザがRFC1867をサポートしていないことが原因です。このブラウザは、<INPUT TYPE="FILE">の定義を参照し、<INPUT TYPE="text" SIZE="20" NAME="name">と解釈しています。テキストボックスにはファイル名が入っているため、これがブラウザによって送信される唯一の情報になります。また、全てのフォーム情報同様、ファイル名もURL暗号化されます(この場合ファイル名には'%xy'が含まれています)。

最初に戻る


なぜUploadとともに、Request.Formが使えないのですか?

アップロードは、RFC1867と呼ばれるインターネット標準規格によって処理されます。この規格は、通常のHTMLフォームとは異なるエンコードスキーマを使用します。通常のHTMLは、以下のように定義されます。

       <FORM METHOD="POST" ACTION="PROCESS.ASP">

ファイルをアップロードするには、追加属性を指定する必要があります。

       <FORM METHOD="POST" ACTION="PROCESS.ASP" ENCTYPE="MULTIPART/FORM-DATA">

この属性は、大容量データを転送する場合、効率を上げるためフォームの暗号化タイプ(ENCTYPE)を変更します。しかし、この暗号化タイプは、ASPのRequest.Formメソッドでは解釈されません。そのため、他のフォームデータからファイル情報を切り離すことができません。

SA-FileUpには、全てのRequest.Form機能が組み込まれているので、この代わりに使用された暗号化スキーマを解釈することができます。

最初に戻る


Webサーバーの仮想ルートに相対するディレクトリにアップロードしたファイルを置く方法はありますか?

あります。ASPに組み込まれたServer.Mappath("\vroot")機能を使用し、仮想パスを物理パスにマッピングします。そのコードは、以下のようになります。

        upl.SaveAs Server.Mappath("\upload") & "\" & filename

最初に戻る


アップロード時にファイルを暗号化できますか? SA-FileUpとともにSSLを使用できますか?

Secure Sockets Layer(SSL)を使用することにより、ファイルは転送中に暗号化できます。既にサーバーが認証を用いて設定されていて、WebアプリケーションがSSLを使用できれば、全ての転送とアップロードは、転送時にファイルを暗号化します。URLには、'http:'"の代わりに'https:を使用して下さい。

最初に戻る


アップロードに権限とセキュリティを設定する方法は?

SA-FileUpは、IUSR_<machinename>のようなIISと同じセキュリティコンテキストで実行します。これは、Internet Service Managerを使用して設定します。SA-FileUpは、この権限でのみファイルへ書き込みを行うことができます。

SA-FileUpはディスクに書き込みを行うため、適切に権限を設定し、IUSR_<machinename>がWindowsのルートディレクトリのような不適切な領域へ書き込みアクセスができないようにしておくことをお勧めします。

また、SA-FileUpは、.MaxBytes属性があるのでアップロードファイルの最大値を設定することができます。これにより、Webサーバーのディスクがユーザーのアップロードファイルで一杯になってしまうのを防ぐことができます。SA-FileUpは、'MaxBytes'で指定されたバイト数まで書き込みまれた時点でアップロードをストップさせます。

最初に戻る


CGIベースのアップロードメカニズムとSA-FileUpとの違いは?

SA-FileUpには、CGIベースのアップロードメカニズムに比べて重要な利点がいくつかあります。

最初に戻る


FTPベースのアップロードメカニズムとSA-FileUpとの違いは?

SA-FileUpは、FTPベースのアップロードメカニズムに比べて多数の利点あります。

 

最初に戻る


Part II - エラーメッセージ

エラーの内容: "HTTP/1.0 501はサポートされていません。

これは、通常、ASPスクリプトが含まれたディレクトリまたは仮想ルートに、実行権限が設定されていないことを意味しています。この設定を修正するには、以下の作業を行ってください。

最初に戻る


エラーの内容: "サーバーオブジェクトエラー'ASP 0177:80040154' Server.CreateObject Failed"

これは、"Class not registered"(クラスが登録されていない)エラーです。もう一度、DLL上のRegsvr32を実行し、レジストレーション中にエラーが発生するかどうか調べてください。

レジストリを手作業で検査することもできます。以下を検索してください。

        HKEY_CLASSES_ROOT\SoftArtisans.FileUp\CLSID

これにはFB3F89EFの値が入っていなければなりません。

レジストリのチェック後もエラーが続く場合は、SAFILEUP.DLLファイルのNTFS権限を検査してください。

IIS(通常はIUSR_machinenameとして実行)は、このファイルとこのファイルが存在するディレクトリの両方に読み取り権限と実行権限が必要です。

CreateObjectが失敗した場合、SA-FileUpは診断情報を返すことができません。Win32 SDKをお持ちの場合は、8nnnnnnnのようなエラーはinclude\winerror.hで検出できます。

最初に戻る

 


エラーの内容: 'エラー"ASP 0115"予期されないエラー - 外部オブジェクト内でtrappableエラーが発生しました。'

これは通常、Internet Information Server / Active Serverの最新バージョンを稼動させていないことを意味します。詳細については、インストールの手引きを参照してください。

ただし、最新のASPバージョンをインストールしてもこの問題が解決されない場合があります。このようにエラーが解決されない場合は、アップロードが実行されていない可能性があります。これは、MicrosoftのHotfixのインストール解説が不正確であることが原因の場合もあります。このような場合は次の処理を行ってください。

  1. IIS (Internet Service Managerからのすべてのサービス)を停止します。

  2. ASP.DLLの古いバージョンがまだ存在すると仮定されるため、コマンドプロンプトからASP_OLD.DLLを削除し、以下を実行します。

           C:> REGSVR32 /U ASP_OLD.DLL (古いバージョンの登録解除)

     

  3. 新しいASP.DLLを使用して、以下を実行します。

           C:> REGSVR32 ASP.DLL

     

  4. IISを再起動させます。

最初に戻る


ファイルの転送中に、ブラウザにより"Network Error"または"Server Connection Reset"がレポートされました。

48 KB以上のファイルを転送しようとした時、フォームの処理中のスクリプトにエラーが発生したか、古いバージョンのHTTPプロキシサーバーを使用している恐れがあります。小さいファイルを送信し、その結果を確認してください。

(フォームの処理中のスクリプトにエラーが発生した場合)以下の順序でエラーが発生しています。

このエラーは古いHTTPプロキシサーバーを使用した場合にも発生します。たとえば、Netscape Proxy Server V1.0は、48KBを超えるHTTP Postを受け付けません。Netscape Proxy Server V2.5以降のバージョンの場合は、この問題は完全に解決されています。ブラウザにネットワークエラーが表示された場合は、受け手側で読み込まれたデータより、HTTP TCPストリームへ送ったデータの方が大きいことが原因です。

最初に戻る

Copyright ゥ 2000 Software Artisans, Inc. All rights reserved.