뭔가 돌아가기는 하는것같은데 파일이 어디 저장되는지도 모르겠고 파일이 저장되는지도 모르겠네요;;
그리고 분명 마지막에 저장된 경로가 떠야 하는데 JSP 파일을 그냥 읽어들인 텍스트가 뜨네요;; 뭐가 잘못된 건가요?
----------Upload.jsp------------------------------------------
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page import="java.io.*,com.oreilly.servlet.*" %>
<%@ page import="com.oreilly.servlet.multipart.*" %>
//<%@ page import="myutil.MultiPart" %>
<%@ page import="java.net.URLEncoder" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<% request.setCharacterEncoding("euc-kr"); %>
<% MultiPart multiPart=new MultiPart(request);
//String fileName=multiPart.getFileName("web.xml");
String dir=application.getRealPath("/upload/");
int max=5*1024*1024;
MultipartRequest m=new MultipartRequest(request,dir,max,"UTF-8",new DefaultFileRenamePolicy());
%>
<c:set var="file1" value="<%= m.getFilesystemName("file1") %>"/>
<c:set var="ofile1" value="<%= m.getOriginalFileName("web.hmtl") %>"/>
<p>
subject:${subject}<br>
Uploadfile1:<a href="/upload/${file1}>${ofile1}</a><br>
</body>
</html>
-----------------UploadFile.java--------------------------------
package uploadFile.com;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import java.io.BufferedInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class UploadFile extends Activity {
/** Called when the activity is first created. */
private Button mUploadBtn;
private FileInputStream mFileInputStream = null;
private URL connectUrl = null;
private EditText mEditEntry;
String lineEnd = "\r\n";
String twoHyphens = "--";
String boundary = "*****";
String fileName="web.html";
HttpServletRequest request;
HttpServletResponse response;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mEditEntry = (EditText) findViewById(R.id.edit_entry);
mUploadBtn = (Button) findViewById(R.id.btn);
mUploadBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
try {
mEditEntry.setText("Uploading....");
String mFilePath = "/sdcard/web.html"; // 업로드할 파일을 미리 준비 할것
DoFileUpload(mFilePath);
} catch (Exception e) {
}
}
});
}
private void DoFileUpload(String mFilePath) throws IOException, ServletException {
// TODO Auto-generated method stub
Log.d("File Up", "file path = " + mFilePath);
HttpFileUpload("http://home.konkuk.ac.kr/~brilliantjay/WebProject/Upload.jsp", "",
mFilePath);
Log.i("success", mFilePath);
}
private void HttpFileUpload(String urlString, String params, String fileName) throws ServletException, IOException {
// TODO Auto-generated method stub
//Log.d("File Up", "mFileInputStream is " + mFileInputStream);
try {
mFileInputStream = new FileInputStream(fileName);
connectUrl = new URL("urlString);
Log.d("File Up", "mFileInputStream is " + mFileInputStream);
// open connection
HttpURLConnection conn = (HttpURLConnection) connectUrl
.openConnection();
Log.i("HttpConnection success",urlString);//여기까지는 들어옴~
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);
// uploadedfile 파일이 ashx 핸들러에서 파일을 찾을 때 사용함으로 이름이 반드시 동일해야함..
// 이름을 바꾸면 ashx 파일에서도 바꿀것.
//dos.writeBytes("Content-Disposition:form-data;name=\"uploadedfile\";filename=\""
//+ fileName + "\"" + lineEnd);
dos.writeBytes("Content-Disposition: form-data; name=\"uploadedfile\";filename=\"" + fileName +"\"" + lineEnd);
dos.writeBytes(lineEnd);
int bytesAvailable = mFileInputStream.available();
int maxBufferSize = 1024;
int bufferSize = Math.min(bytesAvailable, maxBufferSize);
byte[] buffer = new byte[bufferSize];
int bytesRead = mFileInputStream.read(buffer, 0, bufferSize);
Log.d("File Up", "image byte is " + bytesRead);
// Read 파일
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("File Up", "File is written");
mFileInputStream.close();
dos.flush(); // 버퍼에 있는 값을 모두 밀어냄
// 웹서버에서 결과를 받아 EditText 컨트롤에 보여줌
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("File Up", "result = " + s);
mEditEntry.setText(s);
dos.close();
} catch (Exception e) {
//Log.d("File Up", "exception " + e.getMessage());// try 중간 부분에서 즉 jsp와의 커넥션 부분에서 exception으로 들어감
}
doGet(request,response);
}