【发布时间】:2015-10-06 12:27:03
【问题描述】:
所以我现在搜索了很多示例代码,但我发现的唯一内容是服务器端的示例,即接收部分。
我想创建一个应用程序,它使用 restlet 上传文件,内容类型:multipart/form-data。所以我需要发送部分
如何为此创建表单?
我尝试了以下方法,但它不起作用:
public void UploadFile(File f){
Form fileForm = new Form();
fileForm.add(Disposition.NAME_FILENAME, "test.jpg");
Disposition disposition = new Disposition(Disposition.TYPE_INLINE, fileForm);
FileRepresentation entity = new FileRepresentation(f, MediaType.IMAGE_ALL);
entity.setDisposition(disposition);
FormData fd = new FormData("photo", entity);
FormDataSet fds = new FormDataSet();
fds.setMultipart(true);
fds.setMediaType(MediaType.MULTIPART_FORM_DATA);
fds.getEntries().add(fd);
String url = "http://localhost/uploadFile";
Optional<JsonRepresentation> opJrep = m_RestClient.postJson(url,fds,MediaType.MULTIPART_FORM_DATA, Optional.empty());
}
使用下面的方法发布Form并接收一个JSON Representation(postJson意思是post,get json back)
public Optional<JsonRepresentation> postJson(String url, Object sendObject,MediaType mediaType,Optional<Collection<? extends Header>> headers){
//build resource
ClientResource resource = new ClientResource(url);
//build request with headers
Request request = new Request(Method.POST,url);
headers.ifPresent(col->{
request.getHeaders().addAll(col);
});
//set request
resource.setRequest(request);
//get response
resource.post(sendObject,mediaType);
Representation responseEntity = resource.getResponseEntity();
System.out.println(responseEntity.toString());
try {
//get json representation
JsonRepresentation json = new JsonRepresentation(responseEntity);
return Optional.of(json);
} catch (Exception e) {
}
return Optional.empty();
}
当一切正常时,接收服务器应该返回一个 JSON 字符串。
Endpoint 实际上不是我的本地主机,而是带有 SendPhoto 方法的 Telegram Bot。在那里,您可以使用 multipart/form-data 将文件作为图像发布
我会做错什么?如何使用 restlet 作为 multipart/form-data 上传文件(在我的例子中是图像)?
【问题讨论】:
标签: java file-upload restlet restlet-2.3.1