V dokumentaci box.net bylo něco takového:
curl https://www.box.com/api/2.0/files/content \ -H "Authorization: BoxAuth api_key=API_KEY&auth_token=AUTH_TOKEN" \ -F filename=@FILE_NAME \ -F folder_id=FOLDER_ID
Je to pomocí nástroje cURL. Jednoduše vysvětleno, pro upload je potřeba provést POST na adresu https://api.box.com/2.0/files/content spolu s hlavičkou Authorization, kde uvedete nějaké ty tokeny, a dva formulářové elementy filename a folder_id + uploadovaný soubor.
Pro připojení jsem použil knihovnu Apache HttpComponents. Zkoušel jsem i nějaký plugin do Grails, ale u nich jsem měl problém vytvořit formulářový element spolu s tím souborem a poslat to celé.
private String sendHttps(String httpUrl, byte[] data, String filename) {
HttpClient httpclient = new DefaultHttpClient()
httpclient.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1)
HttpPost httppost = new HttpPost(httpUrl)
Map headers = ["Authorization": "BoxAuth api_key=${apiKey}&auth_token=${authToken}"] // hlavička s autorizačními údaji
headers.each {k, v ->
httppost.addHeader(k, v)
}
MultipartEntity mpEntity = new MultipartEntity() // pro POST formuláře s přílohou
ContentBody cbFile = new ByteArrayBody(data, filename)
mpEntity.addPart("filename", cbFile) // tato část mi dělala největší potíže
mpEntity.addPart("folder_id", new StringBody("445743883")) // ID složky na box.net
httppost.setEntity(mpEntity)
HttpResponse response = httpclient.execute(httppost)
HttpEntity resEntity = response.getEntity()
httpclient.getConnectionManager().shutdown()
...
}