안드로이드 개발 질문/답변
(글 수 45,052)
일 단 소스는
package vvvv.com; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import android.app.Activity; import android.content.Intent; import android.database.Cursor; import android.graphics.Bitmap; import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore; import android.provider.MediaStore.Images; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; public class gggg extends Activity { /** Called when the activity is first created. */ public Uri selPhotoUri; public Uri uri; public static final int REQ_IMAGE_SELECT = 1; private Button mUploadBtn; private FileInputStream mFileInputStream = null; private URL connectUrl = null; private EditText mEdityEntry; String lineEnd = "\r\n"; String twoHyphens = "--"; String boundary = "*****"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final Button photo = (Button) findViewById(R.id.Button01); photo.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Intent intent = new Intent(); intent.setAction( Intent.ACTION_GET_CONTENT ); intent.setType( "image/*" ); startActivityForResult(intent,REQ_IMAGE_SELECT); //startActivity(intent); } }); mUploadBtn = (Button)findViewById(R.id.btn); mUploadBtn.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub try { String mFilePath = uri.toString().substring(7).replaceAll("%3B", ";").replaceAll("%20"," "); DoFileUpload(mFilePath); } catch (Exception e) { // TODO: handle exception } } }); } private void DoFileUpload(String filePath) throws IOException { HttpFileUpload("http://194.138.0.3:/dbtestjsp/photo_upload.jsp", "", filePath); } private void HttpFileUpload(String urlString, String params, String fileName) { try { mFileInputStream = new FileInputStream(fileName); 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(twoHyphens + boundary + lineEnd); dos.writeBytes("Content-Disposition: form-data; name=\"upfile\";filename=\"" + fileName+"\"" + lineEnd); dos.writeBytes("Content-Disposition: form-data; name=\"id\";filename=\"" + 1 +"\"" + lineEnd); dos.writeBytes(lineEnd); int bytesAvailable = mFileInputStream.available(); int maxBufferSize = 2048; int bufferSize = Math.min(bytesAvailable, maxBufferSize); byte[] buffer = new byte[bufferSize]; int bytesRead = mFileInputStream.read(buffer, 0, bufferSize); 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(lineEnd); dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd); // 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 ); } Log.e("Test", "result = hhhh"); dos.close(); } catch (Exception e) { Log.d("Test", "exception " + e.getMessage()); // TODO: handle exception } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent intent) { super.onActivityResult(requestCode, resultCode, intent); try { selPhotoUri = intent.getData(); Bitmap selPhoto = Images.Media.getBitmap( getContentResolver(), selPhotoUri ); System.out.println("selPhotoUri : "+selPhotoUri); System.out.println("selPhoto : "+selPhoto); final ImageView Image = (ImageView) findViewById(R.id.IV); Image.setImageBitmap(selPhoto); Cursor c = getContentResolver().query(Uri.parse(selPhotoUri.toString()), null,null,null,null); c.moveToNext(); String path = c.getString(c.getColumnIndex(MediaStore.MediaColumns.DATA)); uri = Uri.fromFile(new File(path)); Log.e("URI", uri.toString().substring(7).replaceAll("%3B", ";")); c.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }// End of onActivityResult() }
일단 사진만 하면 전송이 되는데 사진과 함께 여러 문자열 변수도 같이 보내고 싶습니다. 따로따로 보내는 건 되는데 이미지와 함께 전송할려 하니 쉽지 않네요 ㅠㅠ
도와주세요! 고수님들!