2013-04-03 4 views
0

Я создаю поток приложений, в котором клиент загружает файл в веб-службу RESTful, которая сохраняет файл в заданное по умолчанию местоположение.REST Web Service Загрузка файла определенного файла

код Java для REST ресурса:

@Path("/file") 
public class UploadFile { 

    @POST 
    @Path("/upload") 
    @Consumes(MediaType.MULTIPART_FORM_DATA) 
    public Response uploadFile(
      @FormDataParam("file") InputStream uploadedInputStream, 
      @FormDataParam("file") FormDataContentDisposition fileDetail) { 

     String uploadedFileLocation = "D:/uploaded/" + fileDetail.getFileName(); 

     // save 
     writeToFile(uploadedInputStream, uploadedFileLocation); 

     // ... 
    } 
} 

Код на стороне клиента является:

<form action="http://localhost:8080/file/upload" method="post" enctype="multipart/form-data"> 
    <p>Select a file : <input type="file" name="file" size="50" /></p> 
    <input type="submit" value="Upload" /> 
</form> 

Это прекрасно работает для меня, но теперь я хочу, чтобы закодировать его таким образом, чтобы клиент может решить, где будет сохранен файл. Как передать это местоположение от клиента службе REST? Чтобы получить параметр, мы будем использовать метод GET, но в службе REST вызывается метод POST, поэтому как это можно сделать?

ответ

3

Добавить еще input в ваш form, чтобы содержать информацию о местоположении и получать дополнительную информацию @FormDataParam.

И, конечно, строго проверяйте местоположение, иначе это серьезный риск для безопасности. Я лично соблазню попробовать испортить /etc/passwd :)

Смежные вопросы