저는 Android 애플리케이션 을 만들고 파일을 저장하려고합니다. docx, 음악, 사진, 동영상 OpenStack
개체 저장소 (Swift) API를 사용하고 있습니다. 그러나 이러한 파일을 저장하는 데 문제가 있습니다. 내가 가진 API에서 파일의 이름 만 저장하지만 대시 보드에서 개체를 다운로드하려고하면 개체 자체가 누락됩니다.OpenStack에서 사진 및 기타 파일을 업로드하는 방법 Object Storage (Swift)
내가 얻은 API는 OpenStack
문서입니다.
방법 : PUT 링크 : (내 링크)/V1/AUTH_ (계정)/(용기)/(객체)
HEADER 컨텐츠 형 : (필수) X- 인증 토큰 : (필수) 콘텐츠 길이 : (선택 사항) 의 ETag : (선택 사항) 내용 - 처리 : (선택 사항) 콘텐츠 인코딩 : (옵션) X-삭제-에서을 (선택 사항) X- Object-Meta-PIN : X-삭제-후 : X-객체 메타
BODY 없음
내가 업로드하려고 첫 번째 파일은, 나는 또한 기본 때문에 이진 (64 기수)로 사진을 전송 시도한다 API에서는 문자열 만 허용합니다. 어디에 넣을 지 모르겠으므로 Content-Disposition으로 밀어 넣으려고했지만 실패했습니다. 오픈 스택이 받아 들일 수있는 제한된 데이터에 사진을 둘 수있는 곳이 어디인지 모르겠습니다.
도와주세요. 전화에서 업로드 한 파일을보고 대시 보드에서 다운로드하려고합니다.
이 내 코드입니다 : 코드에서
HttpClient httpclient = new DefaultHttpClient();
HttpPut httpost = new HttpPut("mylink/v1/AUTH_fa6362c6520449f9a8905e84fee68f8c/photos/"+imagename);
try {
httpost.setHeader("X-Auth-Token", "nasbfdblfdfsdfsdfd123a");
httpost.setHeader("Content-Type", "application/octet-stream");
httpost.setHeader("Content-Length ", Integer.toString(binaryimagelength));
httpost.setHeader("Content-Disposition ", binaryimage);// this is path of the image from the phone memory (e.g.)
Log.i("", "pushing your data");
HttpResponse response=httpclient.execute(httpost);
ResponseHandler<String> responseHandler = new BasicResponseHandler();
String response2 = httpclient.execute(httpost, responseHandler);
Log.i("", "Response1: " + response.getStatusLine());
Log.i("", "Response2: " + response2);
}catch (IOException e) {
Log.e("", "IOException " + e.toString());
// TODO Auto-generated catch block
AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this,AlertDialog.THEME_DEVICE_DEFAULT_LIGHT).create();
alertDialog.setTitle("Error");
alertDialog.setMessage(e.toString());
alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// TODO Add your code for the button here.
}
});
alertDialog.show();
}
안녕하세요, 당신의 대답에 감사드립니다. 나는 당신이 제안한 것처럼 거기에 특정 물건을 넣으려고했다. 이것은 내 코드입니다 : 비트 맵 bm = BitmapFactory.decodeFile (이미지 경로); ByteArrayOutputStream baos = new ByteArrayOutputStream(); bm.compress (Bitmap.CompressFormat.JPEG, 100, baos); byte [] b = baos.toByteArray(); httppost.setHeader ("Content-Type": b)를 넣었지만 문자열이 아닌 것은 허용하지 않습니다. 파일 경로에서 파일을 읽고 fileReadObject로 content-disposition을 설정하는 샘플 코드 형식이 있습니까? –
ByteArray를 BufferedReader와 같은 String으로 변환 할 수 있습니까? –
@SyedHabibM 내 질문을 볼 수 있니? 그 파이썬과 나는 비슷한 질문을했습니다. http://stackoverflow.com/questions/32786418/openstack-rest-api-send-a-file-with-python-to-a-openstack-container?noredirect=1#comment53414361_32786418 – D3GAN