在JSON对象中嵌入文件附件

时间:2014-03-26 17:27:33

标签: java html json file

是否可以在JSON对象中嵌入文件附件。我有一个HTML表单,它有几个文本字段输入和一个文件附件。我想发送一个JSON对象将所有这些表单数据(包括文件附件)包装到服务器。

Java中是否有可用的特定库?你能为此提供可能的解决方案。

由于

2 个答案:

答案 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";
        }