안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요.
질문을 계속 올리네요.......
이게 해결이 안되어 마무리를 못한지 일주일째 입니다.
도와주세요......... ㅜㅜ
이미지 사이즈가 너무커 사이즈 줄인 사진을 서버로 전송하려 합니다.
퍼미션
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
에러로그
/mnt/sdcard: open failed: EISDIR (is a
directory)
ArrayList<File>
mArrFile; // 원본파일을 가르킴
ArrayList<File>
mArrTempFile; // 리사이즈 시킨 파일
try {
entity.addPart("miIdx", new StringBody(mStrMiIdx));
entity.addPart("abTitle", new StringBody(mEditTitle.getText().toString()));
mArrTempFile = new ArrayList<File>();
SimpleDateFormat formatter = new SimpleDateFormat ( "yyyyMMddHHmmss", Locale.KOREA );
Date currentTime = new Date ( );
String dTime = formatter.format ( currentTime );
entity.addPart("miIdx", new StringBody(mStrMiIdx));
entity.addPart("abTitle", new StringBody(mEditTitle.getText().toString()));
mArrTempFile = new ArrayList<File>();
SimpleDateFormat formatter = new SimpleDateFormat ( "yyyyMMddHHmmss", Locale.KOREA );
Date currentTime = new Date ( );
String dTime = formatter.format ( currentTime );
String filePath = Environment.getExternalStorageDirectory().getAbsolutePath()+"/";
for(int i=0; i<mArrFile.size(); i++){ // 용량을
줄인 파일은 단말기에 저장이 잘됩니다.
Bitmap temp = BitmapFactory.decodeFile(mArrFile.get(i).getPath());
int img_width = temp.getWidth(); // 변환할 이미지의 가로
int img_height = temp.getHeight(); // 변환할 이미지의 세로
int img_height_change = (int)((img_height*640) / img_width);
Bitmap saveBitmap = Bitmap.createScaledBitmap(temp, 640, img_height_change, true); // 이미지 리사이즈
Bitmap temp = BitmapFactory.decodeFile(mArrFile.get(i).getPath());
int img_width = temp.getWidth(); // 변환할 이미지의 가로
int img_height = temp.getHeight(); // 변환할 이미지의 세로
int img_height_change = (int)((img_height*640) / img_width);
Bitmap saveBitmap = Bitmap.createScaledBitmap(temp, 640, img_height_change, true); // 이미지 리사이즈
File fileTemp = new File(filePath);
FileOutputStream out;
FileOutputStream out;
try
{
if(!fileTemp.isDirectory()){
fileTemp.mkdirs();
}
out = new FileOutputStream(filePath+dTime+"_"+i+".jpg");
saveBitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
if(!fileTemp.isDirectory()){
fileTemp.mkdirs();
}
out = new FileOutputStream(filePath+dTime+"_"+i+".jpg");
saveBitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
try {
out.close();
} catch (IOException e) {
mStrErrorMsg = "등록이 실패되었습니다. aaaaaaaaa";
}
} catch (FileNotFoundException e) {
mStrErrorMsg = "등록이 실패되었습니다. bbbbbbbbbb";
out.close();
} catch (IOException e) {
mStrErrorMsg = "등록이 실패되었습니다. aaaaaaaaa";
}
} catch (FileNotFoundException e) {
mStrErrorMsg = "등록이 실패되었습니다. bbbbbbbbbb";
}
mArrTempFile.add(fileTemp);
}
}
for(int i=0; i<mArrTempFile.size(); i++){
entity.addPart(String.format("abFileName%d",
(i+1)), new FileBody(mArrTempFile.get(i))); // 여기에서 문제가 있는것 같습니다.
//entity.addPart(String.format("abFileName%d",
(i+1)), new FileBody(mArrFile.get(i))); // 원본파일을 올리면 실행이
잘됩니다.
}
}
httppost.setEntity(entity);
mStrErrorMsg = mArrTempFile.size()+"개 등록이 완료 되었습니다.";
mBoolWriteResult = true;
try {
response = httpclient.execute(httppost);
} catch (ClientProtocolException e) {
mStrErrorMsg = "등록이 실패되었습니다. cccccccccc";
} catch (IOException e) {
mStrErrorMsg = e.getMessage(); // 이게 실행이 됩니다.
}
} catch (UnsupportedEncodingException e) {
mStrErrorMsg = "등록이 실패되었습니다.";
}




String filePath = Environment.getExternalStorageDirectory().getAbsolutePath()+"/";
이렇게 넣은 것은 디렉토리라는 것 같은데요..