
1. Android Project Code 입니다.
package com.example.cameraactivity2;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.provider.MediaStore;
import android.provider.MediaStore.Images;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
private final int requestCode1= 101; // 앨범
private final int requestCode2 = 102; // 사진기
private ImageView imageView;
private Bitmap profileBitmap;
private TextView textView;
final String boundary = "*************************************************";
final String lindEnd = "\r\n";
final String towHyphens = "--";
Uri currImageURI;
ProgressDialog dialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = (ImageView)findViewById(R.id.SecondImageView01);
textView = (TextView)findViewById(R.id.textView1);
}
// 앨범
public void albumBtn(View v){
Intent intent = new Intent();
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent, requestCode1);
}
// 사진기
public void cameraBtn(View v){
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE, null);
startActivityForResult(intent, requestCode2);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
//앨범
if(requestCode == requestCode1 && resultCode == RESULT_OK){
if( data != null){
try{
currImageURI = data.getData();
Bitmap photo = Images.Media.getBitmap(getContentResolver(), currImageURI);
profileBitmap = Bitmap.createScaledBitmap(photo, photo.getWidth(), photo.getHeight(), true);
imageView.setBackgroundResource(0);
imageView.setImageBitmap(profileBitmap);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
textView.setText("BALLERY: " + getgetRealPathFromURI(currImageURI));
}catch(Exception e){
}
}
}else if(requestCode == requestCode2 && resultCode == RESULT_OK){
}else{
Toast toast = Toast.makeText(this, "사진 선택이 취소 되었습니다. ", Toast.LENGTH_LONG);
toast.show();
}
}
//전송하기 버튼을 누르면
public void saveBtn(View v) throws IOException{
this.dialog = ProgressDialog.show(this, "전송 중..", "시간이 좀 걸려요:)", true, false);
new Thread(new Runnable(){
@Override
public void run() {
// 선택한 이미지의 uri를 읽어온다.
Uri selPhtoUri = currImageURI;
// 업로드할 서버의 url 주소
String urlString = "http://192.168.0.11/mobile/saveImage.jsp";
//절대경로를 획득한다!!! 중요~
Cursor c = getContentResolver().query(Uri.parse(selPhtoUri.toString()), null, null, null, null);
c.moveToNext();
//업로드할 파일의 절대경로 얻어오기("_data") 로 해도 된다.
String absolutePath = c.getString(c.getColumnIndex(MediaStore.MediaColumns.DATA));
Toast.makeText(MainActivity.this, absolutePath, 0).show();
//파일 업로드 시작!
HttpFileUpload("http://192.168.0.11/mobile/saveImage.jsp", "", absolutePath );
confirmHandler.sendEmptyMessage(0);
}
}).start();
}
private Handler confirmHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
}
};
private void HttpFileUpload(String urlString, String params, String fileName){
try{
FileInputStream mFileInputStream = new FileInputStream(fileName);
URL connectUrl = new URL("urlString");
Log.d("Test", "mFileInputStream is" + mFileInputStream);
//open connection
HttpURLConnection conn = (HttpURLConnection)connectUrl.openConnection();
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setUseCaches(false);
conn.setRequestMethod("POST");
conn.setRequestProperty("Connection", "Keep-Alive");
conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
//write data
DataOutputStream dos = new DataOutputStream(conn.getOutputStream());
dos.writeBytes(towHyphens + boundary + lindEnd);
dos.writeBytes("Content-Disposition: form-data; form-data; name=\"uploadedfile\";filename=\"" + fileName+"\""+lindEnd);
dos.writeBytes(lindEnd);
int bytesAvailable =mFileInputStream.available();
int maxBufferSize = 1024;
int bufferSize = Math.min(bytesAvailable, maxBufferSize);
byte[] buffer = new byte[bufferSize];
int bytesRead = mFileInputStream.read(buffer, 0, maxBufferSize);
Log.d("Test", "image byte is " + bytesRead);
//read image
while(bytesRead >0){
dos.write(buffer, 0, bufferSize);
bytesAvailable = mFileInputStream.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
bytesRead = mFileInputStream.read(buffer, 0, bufferSize);
}
dos.writeBytes(lindEnd);
dos.writeBytes(towHyphens + boundary + towHyphens + lindEnd);
//close streams
Log.e("Test", "File is written");
mFileInputStream.close();
dos.flush(); //finish upload...
//get response
int ch;
InputStream is = conn.getInputStream();
StringBuffer b = new StringBuffer();
while((ch = is.read() ) != -1){
b.append((char)ch);
}
String s = b.toString();
Log.e("Test", "result ="+s);
dos.close();
}catch(Exception e){
Log.d("Test", "exception " + e.getMessage());
}
}
public String getgetRealPathFromURI(Uri contentUri){
String[] proj = {MediaStore.Images.Media.DATA};
Cursor cursor = managedQuery(contentUri, proj, null, null, null);
int coolumn_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(coolumn_index);
}
}
서버 JSP 부분 입니다.
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy"%>
<%@page import="com.oreilly.servlet.MultipartRequest"%>
<%@ page pageEncoding="UTF-8"%>
<%
String dir = application.getRealPath("upload");
int max = 5*1024*1024;
MultipartRequest mr = new MultipartRequest(request, dir, max, "UTF-8", new DefaultFileRenamePolicy());
String orgFileName = mr.getOriginalFileName("file1");
String saveFileName = mr.getFilesystemName("file2");
%>
에러 입니다.

머가 문제 인가요????