2017-04-07 35 views
1

Box APIを使用してファイルをBoxにアップロードしようとしています。しかし私が何をしようと、私はいつも他の情報なしで400 Bad Requestを受け取る。問題の考え方は?カールを使用してファイルをBox APIにアップロード

カールhttps://upload.box.com/api/2.0/files/content \ -H "許可:ベアラaccess_tokenは": "tigers.jpeg"、 "親":{ "ID": "11446498 =" { "name" を属性-F -X POST \ 「}}」\ -F [email protected]

try { 
    String url = "https://upload.box.com/api/2.0/files/content"; 
    WebResource resource = client.resource(url); 

    JSONObject parentInput = new JSONObject(); 
    parentInput.put("id", "0"); 

    JSONObject inputJson = new JSONObject(); 
    fileName = fileName.trim(); 
    inputJson.put("name", fileName); 
    inputJson.put("parent", parentInput); 
    input = inputJson.toString(); 

    FormDataMultiPart form = new FormDataMultiPart(); 

    String cdMeta = "form-data; name=\"attributes\";"; 
    String cdFile = "form-data; name=\""+fileName+"\";"; 

    FormDataContentDisposition cdmetaObj = new FormDataContentDisposition(cdMeta); 
    FormDataBodyPart metaDdbpart = new FormDataBodyPart(cdmetaObj, input); 
    form.bodyPart(metaDdbpart); 

    FormDataContentDisposition cdFileObj = new FormDataContentDisposition(cdFile); 

    FormDataBodyPart fileDdbpart = new FormDataBodyPart("file", inputStream, 
    MediaType.APPLICATION_OCTET_STREAM_TYPE); 

    fileDdbpart.setContentDisposition(cdFileObj); 
    form.bodyPart(fileDdbpart); 

    //Here we are using builder for executing client request 
    Builder builder = resource.header("Content-Type", 
    MediaType.MULTIPART_FORM_DATA).header("Authorization","Bearer " + accessToken); 
    ClientResponse response = builder.post(ClientResponse.class, form); 
    String result = response.getEntity(String.class); 
} catch (Exception e) { 
    e.printStackTrace(e); 
} 
+0

このエラーは、不正な形式のJSONデータに関連する可能性があります。 Boxの文書をチェックすることから始めてみることをお勧めします。 –

答えて

1

私は今では小さな変更で正常にアップロードだ、解決策を得ました。ここでの問題は、contentDispositionを適切に管理することです。

try { 
    String url = "https://upload.box.com/api/2.0/files/content"; 
    WebResource resource = client.resource(url); 

    JSONObject parentInput = new JSONObject(); 
    parentInput.put("id", "0"); 

    JSONObject inputJson = new JSONObject(); 
    fileName = fileName.trim(); 
    inputJson.put("name", fileName); 
    inputJson.put("parent", parentInput); 
    input = inputJson.toString(); 

    FormDataMultiPart form = new FormDataMultiPart(); 

    String cdMeta = "form-data; name=\"metadata\";"; 
    String cdFile = "form-data; name=\"content\"; 
    filename = \"" + fileName + "\";"; 


    FormDataContentDisposition cdmetaObj = new FormDataContentDisposition(cdMeta); 
    FormDataBodyPart metaDdbpart = new FormDataBodyPart(cdmetaObj, input); 
    form.bodyPart(metaDdbpart); 

    FormDataContentDisposition cdFileObj = new FormDataContentDisposition(cdFile); 

    FormDataBodyPart fileDdbpart = new FormDataBodyPart("file", inputStream, 
     MediaType.APPLICATION_OCTET_STREAM_TYPE); 

    fileDdbpart.setContentDisposition(cdFileObj); 
    form.bodyPart(fileDdbpart); 

    //Here we are using builder for executing client request 

    Builder builder = resource.header("Content-Type", 
     MediaType.MULTIPART_FORM_DATA).header("Authorization", "Bearer " + accessToken); 
    ClientResponse response = builder.post(ClientResponse.class, form); 
    String result = response.getEntity(String.class); 
} catch (Exception e) { 
    e.printStackTrace(e); 
} 
} 
関連する問題