是否可以將文件附件嵌入到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