interMediaを使用したブラウザからのマルチメディア・コンテンツのアップロードについて

ブラウザからデータベースへのメディア・ファイルのアップロード処理は、次の2つのステップに分けることができます。

  1. ブラウザからWebサーバーへのメディア・ファイルのアップロード
  2. Webサーバーからデータベースへのコンテンツのロード

最初のステップではHTMLフォームが必要です。フォームには、ENCTYPE="multipart/form-data"属性が必要です。フォーム内では、ファイル名の入力にFILE INPUT要素が使用されます。次に例を示します。



<FORM ACTION="handleUpload.jsp" METHOD="POST" ENCTYPE="multipart/form-data">
  Id: <INPUT TYPE="TEXT" NAME="id" LENGTH=10>
  Description: <INPUT TYPE="TEXT" NAME="description" LENGTH=40>
  Photo: <INPUT TYPE="FILE" NAME="photo" LENGTH=40>
  <INPUT TYPE="SUBMIT" TEXT="SUBMIT">
</FORM>

ユーザーがすべての情報をフォームに入力して送信ボタンをクリックすると、ファイルのコンテンツとその他の情報が、multipart/form-dataコンテンツ・タイプを使用してHTTP POSTリクエストとしてWebサーバーに送信されます。HTTPリクエストを処理するために、JSPページhandleUpload.jspが起動されます。次に2番目のステップに進みます。

2番目のステップでは、OrdHttpUploadFormDataおよびOrdHttpUploadFileを使用して、ファイル・コンテンツとその他の情報を取得します。次に、OrdImageDomain.setContentSource()メソッドを使用してOrdHttpUploadFileSourceを設定します。最後に、commit()メソッドをコールし、コンテンツをロードして変更内容をコミットします。

次のサンプルは、アップロードしたコンテンツの問合せ方法を示しています。



  //
  // Create an OrdHttpUploadFormData object and use it to parse the
  // multipart/form-data message.
  //
  OrdHttpUploadFormData formData = new OrdHttpUploadFormData( request ); 
  formData.parseFormData();

  //
  // Get the description, location, and photo.
  //
  String id = formData.getParameter( "id" );
  String description = formData.getParameter( "description" );
  OrdHttpUploadFile photo = formData.getFileParameter( "photo" );

  //
  // Create a new row
  //
  Row row = viewObject.createRow();

  //
  // Create a new OrdImageDomain object
  //
  OrdImageDomain img = new OrdImageDomain();

  //
  // Use photo as the content source for deferred loading
  //
  img.setContentSource(new OrdHttpUploadFileSource(photo));

  //
  // Set other attributes
  //
  row.setAttribute("Image", img);
  row.setAttribute("Id", id);
  row.setAttribute("Description", description);

  //
  // Insert the row into the View Object
  //
  vo.insertRow(row);

  //
  // Load the content from photo to the database and
  // commit the changes.
  //
  appModule.getTransaction().commit();