Я пытаюсь загрузить файл с использованием JavaFX с помощью HttpRequest. Для этой цели я написал следующую функцию.JavaFX: загрузка файла в службу REST/сервлет сбой из-за недостающей границы
function uploadFile(inputFile : File) : Void {
// check file
if (inputFile == null or not(inputFile.exists()) or inputFile.isDirectory()) {
return;
}
def httpRequest : HttpRequest = HttpRequest {
location: urlConverter.encodeURL("{serverUrl}");
source: new FileInputStream(inputFile)
method: HttpRequest.POST
headers: [
HttpHeader {
name: HttpHeader.CONTENT_TYPE
value: "multipart/form-data"
}
]
}
httpRequest.start();
}
На стороне сервера, я пытаюсь обрабатывать входящие данные с помощью API Apache Commons FileUpload с помощью службы Джерси REST. Код, используемый для этого, представляет собой простую копию учебника FileUpload на домашней странице Apache.
@Path("Upload")
public class UploadService {
public static final String RC_OK = "OK";
public static final String RC_ERROR = "ERROR";
@POST
@Produces("text/plain")
public String handleFileUpload(@Context HttpServletRequest request) {
if (!ServletFileUpload.isMultipartContent(request)) {
return RC_ERROR;
}
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List<FileItem> items = null;
try {
items = upload.parseRequest(request);
}
catch (FileUploadException e) {
e.printStackTrace();
return RC_ERROR;
}
...
}
}
Однако я получаю исключение в items = upload.parseRequest(request);
: org.apache.commons.fileupload.FileUploadException: запрос был отклонен, поскольку не многочастная границы не была найдена
Я предполагаю, что я должен добавить вручную границу info к InputStream. Есть ли простое решение для этого? Или есть даже другие решения?
Это работает. Однако он имеет некоторые ограничения. Например. вы должны передать имя файла в качестве параметра запроса. – spa