是否可以将文件附件嵌入到JSON对象中?我有一个HTML表单,它有几个文本字段输入和一个文件附件。我想发送一个包含所有这些表单数据(包括文件附件)的JSON对象到服务器。在JSON对象中嵌入文件附件
Java中是否有任何特定的库可以做到这一点?你能为此提供可能的解决方案吗?
感谢
是否可以将文件附件嵌入到JSON对象中?我有一个HTML表单,它有几个文本字段输入和一个文件附件。我想发送一个包含所有这些表单数据(包括文件附件)的JSON对象到服务器。在JSON对象中嵌入文件附件
Java中是否有任何特定的库可以做到这一点?你能为此提供可能的解决方案吗?
感谢
如果你要发送的文件的实际数据,你可能希望将其编码为Base64字符串,并发送你的JSON
- 看到小提琴,例如在JavaScript编码它的:
http://jsfiddle.net/eliseosoto/JHQnk/
那么你可以做使用任何语言和/或图书馆适用于服务器端的对面。
编码为base64也将受到〜增加文件大小33%,但如果你确定,这是完成工作的一个非常简单的方法。 – Yuval
@YuvalBoss我想你是对的。这是一个问题。较大的文件附件创建庞大的JSON对象。这是一个缺点。就我提出的问题而言,这似乎是正确的答案,并且工作起来。 –
使用MultipartEntity,别人发布了类似的问题:How to send file in JSON on android? 您也可以考虑将文件保存在服务器上,并将路径/ URL发送到其他服务器可以访问它们的文件位置。
public String SendToServer(String aUrl,File Filename)
{
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(filename);
try
{
MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
entity.addPart("file", new FileBody(Filename));
entity.addPart("video-title", new StringBody("Video"));
entity.addPart("video-type", new StringBody("1"));
httpPost.setEntity(entity);
HttpContext context = new BasicHttpContext();
// Bind custom cookie store to the local context
context.setAttribute(ClientContext.COOKIE_STORE, Globals.sessionCookie);
HttpResponse response = httpClient.execute(httpPost, context);
HttpEntity resEntity = response.getEntity();
String Response = "";
if (response != null)
{
Response = EntityUtils.toString(resEntity);
}
return Response;
}
catch (IOException e)
{
e.printStackTrace();
}
return "Exception";
}
我想就可持续解决方案而言,将文件上传到文件服务器并将文件url与请求进行映射是一个不错的选择。感谢您的建议。 –
http://stackoverflow.com/questions/1443158/binary-data-in-json-string-something-better-than-base64 – Jonline