ドキュメントを読んだり、インターネットでいくつかのヒントを検索したりするのに何時間も費やした後、私はついにStackOverFlowアカウントを作成することにしました。必死に見えますか?はは、行きましょう。
編集(2012年5月16日):解決策を見つけたので(ついに自分で)、古いコードを実行中のコードに置き換えました。
/ admin / lstimg(ListImage)に移動します。これは、データベースから画像(URL)レコードコレクションを取得します。次に、コレクションが属性として設定され、jspファイルのデータを使用できるようになります。
注:パブリッククラスListImageServletはHttpServletを拡張し、 MultipartConfigで注釈が付けられています。
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
try
{
Collection images = ImageFacade.getIjc().findImageEntities();
request.setAttribute("images", images);
request.getRequestDispatcher("/adm/img/lstimg.jsp").forward(request, response);
}
catch (Exception ex)
{
Logger.getLogger(ListImageServlet.class.getName()).log(Level.SEVERE, "Cannot retrieve the images.", ex);
}
}
私のjspには、大きなフォームがあります(私の「画像」コレクションがそうであるように)。ここでは、「画像」コレクションのデータを使用します。画像ごとに、最初の列にサムネイル、2番目の列にファイル入力があります。この(単一の)フォームを介して複数の更新を実行しようとしています。
<form method="post" action="../admin/lstimg" enctype="multipart/form-data">
<table>
<thead>
<tr>
<th>Thumb</th>
<th>to update</th>
</tr>
</thead>
<tbody>
<c:forEach items="${images}" var="image">
<tr>
<td>
<img src="myURL" height="100"/>
</td>
<td>
<input type="file" name="${image.thumb}"/>
</td>
</tr>
</c:forEach>
</tbody>
</table>
<input type="submit" value="Proceed" />
</form>
私の最初の質問は次のとおりです。同じ「image.thumb」(キー)を持つ新しい画像が必要なので、ファイル入力名を現在の「image.thumb」に設定しましたが、コンピューターでファイルを取得する際に問題がありますか?コンピューター上のファイルには独自のパス/ファイル名があり、サーバー上のファイルには別のパス/ UUID(キー)があるためです。
編集(2012年5月16日):AWSはファイルパス(手動で設定)を要求しないため、これに問題はありません。
フォームの外観(Webブラウザ)
更新/変更する必要のある画像を選択したら、[送信]ボタン([続行])をクリックします。
- すべてのパーツ(ファイル入力)を取得して、コレクション「allParts」に保存します。
- 「allParts」コレクションのすべての部分をチェックします。ファイルサイズが1bから10Moの場合、その部分は「selectedParts」コレクションに追加されます。
- ここでは、やりたいことを行う方法がわかりません...すべての画像はAmazonS3サーバーでホストされています。Jets3tToolkitを使用しています。最初のアップロードでは、buildPostFormメソッド(以下)を呼び出して、すべてを実行します。
S3Service.buildPostForm(String bucketName, String key, ProviderCredentials credentials, Date expiration, String[] conditions, String[] inputFields, String textInput, boolean isSecureHttp);
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
try
{
ImageCheck.initAS3(request);
ImageCheck.update(request, response);
}
catch (S3ServiceException ex)
{
Logger.getLogger(ListImageServlet.class.getName()).log(Level.SEVERE, null, ex);
}
catch (ServiceException ex)
{
Logger.getLogger(ListImageServlet.class.getName()).log(Level.SEVERE, null, ex);
}
catch (NoSuchAlgorithmException ex)
{
Logger.getLogger(ListImageServlet.class.getName()).log(Level.SEVERE, null, ex);
}
catch (IllegalStateException ex)
{
Logger.getLogger(ListImageServlet.class.getName()).log(Level.SEVERE, null, ex);
}
response.sendRedirect("../admin/lstimg");
}
2番目の質問は、サーブレットを介してファイルをアップロード/変更するには、独自のフォームを使用するため、ファイルをS3Objectに設定する必要がありますが、「selectedParts」で何ができるかわかりません。パーツをファイルに変更する方法はありますか?Part以外のものを使用する必要がありますか?
編集(2012年5月16日):私の解決策
英語でごめんなさい。あなたの提案、アドバイス、答えを事前に感謝します。コードに関して質問がある場合、またはさらに必要な場合は、遠慮なく。