Cordova 에서 서버로 이미지 파일 전송하기. 그거/Mobile2012. 10. 8. 17:47
1. html 파일 소스 코드
function uploadPhoto(imageURI) {
var options = new FileUploadOptions();
options.chunkedMode = false;
options.fileKey="file";
options.fileName=imageURI.substr(imageURI.lastIndexOf('/')+1);
options.mimeType="image/jpeg";
var params = new Object();
params.value1 = "test";
params.value2 = "param";
options.params = params;
var fileTransfer = new FileTransfer();
fileTransfer.upload(
imageURI,
"http://192.168.1.3:8080/MobileServer/upload.jsp",
win,
fail,
options
);
}
2. 서버 소스 코드
ServletFileUpload upload = new ServletFileUpload(factory);
// maximum size before a FileUploadException will be thrown
upload.setSizeMax(5000000);
List<?> fileItems = null;
try{
fileItems = upload.parseRequest(request);
}catch(FileUploadException fue){
fue.printStackTrace();
}
if( fileItems != null ) {
System.out.println();
FileItem fi = null;
for (Object obj : fileItems) {
fi = (FileItem) obj;
if (fi.isFormField()) {
parseFormField(fi);
System.out.println("@" + fi);
} else {
storedFileName = "/upload/_android_" + fi.getName();
fi.write(createStoredFile(storedFileName));
}
}
}
3. 서버쪽 library 파일
- commons-fileupload-1.2.1.jar
- commons-httpclient-3.1.jar
- commons-io-2.0.1.jar
4. 주의할 점
- 오류가 발생할 경우 FileUploadOptions 의 checkedMode 를 false 로 한다.(꼭 false 로 하지 않아도 된다)
o chuckedMode
true : 서버쪽에 파일을 stream 으로 전송함(HTTP header 에 content-length 설정 안됨)
false : 파일을 전송하기 전에 메모리에 올려놓고 전송함(HTTP header 에 content-length 설정됨)
- FIleTransferError.CONNECTION_ERR 오류가 발생할 경우 서버쪽의 로그를 잘 뒤져본다.
(서버쪽에서 Exception 이 발생해도 이 에러가 발생함)
'그거 > Mobile' 카테고리의 다른 글
나의 첫번째 Sencha Touch 를 이용한 App. (0) | 2012.07.25 |
---|---|
Mobile 개발 관련 자료 조사 (0) | 2012.06.07 |
Android Emulator 에 Proxy 설정하기 (0) | 2012.01.31 |
XMPP(Extensible Messaging & Presence Protocol) (0) | 2011.06.08 |
C2DM(Cloud To Device Messaging) (0) | 2011.06.08 |