是否可以在JSON对象中嵌入文件附件。我有一个HTML表单,它有几个文本字段输入和一个文件附件。我想发送一个JSON对象将所有这些表单数据(包括文件附件)包装到服务器。
Java中是否有可用的特定库?你能为此提供可能的解决方案。
由于
答案 0 :(得分:5)
如果您想发送文件的实际数据,您可能希望将其编码为base64字符串并在JSON
中发送 - 请参阅小提琴,例如在javascript中对其进行编码:
http://jsfiddle.net/eliseosoto/JHQnk/
然后,您可以使用适当的语言和/或库在服务器端执行相反的操作。
答案 1 :(得分:1)
使用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";
}