загрузка файлов по URL - PullRequest
       21

загрузка файлов по URL

1 голос
/ 16 февраля 2011

Мне нужно реализовать сервлет, который загружает файлы на сервер, я понимаю, что все говорят, что это должен быть метод POST для загрузки файлов, а не метод GET.Однако есть ли способ загрузить файл и показать параметры запроса в URL, даже если запрос поступает из метода POST?Если нет, есть ли другой подход?

В настоящее время мой сервлет, использующий метод post, имеет вид http://example.com/FileUpload/UploadFile

Что-то, что я хочу - что-то вроде http://example.com/FileUpload/UploadFile?id=125&fileNum=5

Спасибо за ваш вклад.

Ответы [ 4 ]

2 голосов
/ 16 февраля 2011

Просто ПОСТ

http://example.com/FileUpload/UploadFile?id=125&fileNum=5

вместо

http://example.com/FileUpload/UploadFile

Нет такого ограничения, что вы не можете публиковать на URL с параметрами. Вы можете обрабатывать данные публикации так же, как сейчас, плюс вы можете также получить параметры получения.

1 голос
/ 16 февраля 2011

Я думаю, что это не будет элегантным решением, но вы можете использовать JavaScript, чтобы изменить действие элемента формы перед его отправкой для включения параметров строки запроса.

Форма будет выглядеть примерно так:

<form method="POST" id="myForm" onSubmit="submitMyForm(this)>
   <input type="text" id="id">

Тогда вам понадобится JavaScript для изменения элемента действия формы:

function submitMyForm(theForm) {
  theForm.action="http://example.com/FileUpload/UploadFile?id=" + 
         getElementById("id").value;
  theForm.submit();
}

Есть ли какая-то причина, по которой вы не можете просто отправить параметры с постом и вытащить их на стороне сервера?

0 голосов
/ 16 февраля 2011

В качестве альтернативы, если вы создаете сообщение multipart / form-data, вы можете включить в свой файл несколько параметров. Параметры отправляются как часть тела сообщения вместе с файлом.

0 голосов
/ 16 февраля 2011

Вы можете отправлять параметры и файлы в POST. Например, в HTML вы можете иметь форму с этими значениями, они могут быть скрытого типа. В сервлете вы можете получить значения так же, как вы используете GET.

Также лучше использовать метод POST, потому что пользователь не может изменить значение в строке направления URL.

...