지금.... 어떠한 방식이냐면
갤러리에서 사진을 선택하면
uri 를 가지고 옵니다.
filename = /storage/emulated/0/DCIM/Camera/20170118_185503.jpg
이런식으로 리스트를 받아오고요
File sourcefile = new File(filename);
이렇게 파일 생성 후에
Bitmap = bitmap = BitmapFactory.decodeFile(filename);
비트맵을 생성해 줍니다.
비트맵 회전 처리 후에
function(){
File storage = context.getCacheDir(); // 이 부분이 임시파일 저장 경로
String fileName = "abcd.jpg"; // 파일이름은 마음대로!
File tempFile = new File(storage, fileName);
try {
tempFile.createNewFile(); // 파일을 생성해주고
FileOutputStream out = new FileOutputStream(tempFile);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return tempFile.getAbsolutePath();
}
bitmap -> jpeg 로 변경 후에 경로 리턴 받아서
sourcefile = new File(filename); 해서 기존 파일객체에 덮어씌워주고요
FileInputStream fileInputStream = new FileInputStream(sourceFile);
URL url = new URL(upLoadServerUri);
// Open a HTTP connection to the URL
conn = (HttpURLConnection) url.openConnection();
conn.setDoInput(true); // Allow Inputs
conn.setDoOutput(true); // Allow Outputs
conn.setUseCaches(false); // Don't use a Cached Copy
conn.setRequestMethod("POST");
conn.setRequestProperty("Connection", "Keep-Alive");
conn.setRequestProperty("ENCTYPE", "multipart/form-data");
conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
conn.setRequestProperty("uploaded_file", fileName1);
dos = new DataOutputStream(conn.getOutputStream());
dos.writeBytes(twoHyphens + boundary + lineEnd);
imageName = id + "_" + String.valueOf(System.currentTimeMillis()) + isWidth + "_" + count +".jpg&" + sourceFile.length();
dos.writeBytes("Content-Disposition: form-data; name=\"uploaded_file\";filename=\""
+ imageName + "\"" + lineEnd); //이 부분에서 이름을 정해줍니다.
pathListChangeName.add(imageName);
dos.writeBytes(lineEnd);
// create a buffer of maximum size
bytesAvailable = fileInputStream.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
buffer = new byte[bufferSize];
// read file and write it into form...
bytesRead = fileInputStream.read(buffer, 0, bufferSize);
while (bytesRead > 0) {
dos.write(buffer, 0, bufferSize);
bytesAvailable = fileInputStream.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
bytesRead = fileInputStream.read(buffer, 0, bufferSize);
}
// send multipart form data necesssary after file data...
dos.writeBytes(lineEnd);
dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
// Responses from the server (code and message)
serverResponseCode = conn.getResponseCode();
String serverResponseMessage = conn.getResponseMessage();
Log.i("uploadFile", "HTTP Response is : "
+ serverResponseMessage + ": " + serverResponseCode);
//Log.i(TAG, response)
//close the streams //
fileInputStream.close();
dos.flush();
dos.close();
fileinputstream 으로 서버에 전송합니다.
이때
기존용량이 177kb -> 429kb로 증가하는 현상이 발견됩니다.
중간에 1메가 이하로 줄이는 함수가 있는데
1메가 이상이면 상관이 없다만(증가해도 줄어들기때문에)
이하이면 이렇게 증가하는 현상이 발생합니다.
정상적인 현상인지요...
파일은 갤러리에서 확인해도 177kb, 컴퓨터로 확인해도 177kb이구요
저 함수를 거쳐 업로드 하게되면 용량이 증가합니다.
무엇이 문제일지 조언좀 부탁드립니다.