После многих часов, проведенных на чтение документации и поиск некоторых советов в Интернете, я, наконец, решил создать учетную запись Stack OverFlow; кажется отчаянным? Ха-ха, пойдем.Загрузка нескольких файлов Amazon S3 с использованием частей
EDIT (05/16/2012): Когда я нашел решение (наконец, я сам), я заменил свой старый код на свой текущий код.
Я иду в/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 есть большая форма (как моя коллекция «изображений»). Здесь я использую данные из коллекции «images». Для каждого изображения в первом столбце эскиз и во втором столбце ввод файла. Я пытаюсь выполнить несколько обновлений через эту (одну) форму.
<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 (ключ).
EDIT (05/16/2012): Поскольку AWS не запрашивает путь к файлу (для установки вручную), никаких проблем с этим.
Как форма выглядит (Web Browser)
После того как я выбрал образ (ы) мне нужно обновить/изменить, я нажимаю на кнопку Submit (Продолжить).
- Я получаю все части (входы файлов) и сохраняю их в коллекции «allParts».
- Я проверяю каждую часть коллекции «allParts», если размер файла находится между 1b и 10Mo, часть добавляется в коллекцию «selectedParts».
- Здесь я не знаю, как делать то, что я хочу ... Все мои изображения размещены на моем сервере Amazon S3. Я использую Jets3t Toolkit. Для первой загрузки я вызываю метод 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");
}
Мой второй вопрос: Чтобы загрузить/изменить файл через сервлет, как я использую свою собственную форму, мне нужно, чтобы установить файл в моем S3Object, но я не знаете, что я могу сделать с моими «избранными группами»? Есть ли способ изменить часть на файл? Должен ли я использовать что-то другое, чем Part?
EDIT (05/16/2012): My solution
Извините за мой английский. Спасибо заранее за ваши предложения, советы, ответы. Если у вас есть какие-либо вопросы относительно кода, или вам нужно еще немного, не стесняйтесь.
Я уже пробовал это (вчера), но тогда я не знаю, что делать с моей IS/OS (наконец, получить «Файл»)? Я никогда не использовал это раньше ... Я много чего пробовал, но все не получилось. В моей базе данных есть только ключ S3Object, который позволяет легко получить мое изображение из моего AS3S. Как я уже сказал, все мои изображения (или будут, для новых) сохранены на моем сервере Amazon S3. Чтобы сохранить 'S3Object' в моей' S3Bucket', мне нужно «установить» файл. Вот почему мне это нужно. 'public S3Object (файл java.io.File) throws java.security.NoSuchAlgorithmException, java.io.IOException' – ltin