phonegap上传照片后,用java写的后台获取到的数据流没数据
窝窝啦 2012-07-16 11:18:19 以下是js部分代码:
function uploadPhoto(imageURI) {
var options = new FileUploadOptions();
options.fileKey="file";
options.fileName=imageURI.substr(imageURI.lastIndexOf('/')+1);
options.mimeType="image/jpeg";
//options.mimeType="multipart/form-data";
options.chunkedMode = false;
var params = new Object();
params.service = "page/demos.phoneApi"; //java类对于的映射
params.listener = "uploadImage"; //后台调用的方法
options.params = params;
var ft = new FileTransfer();
alert(imageURI);
ft.upload(imageURI, "http://192.168.2.114:7001/gridsalemanm", win, fail, options);
}
function win(r) {
alert("Code = " + r.responseCode);
alert("Response = " + r.response);
alert("Sent = " + r.bytesSent);
$("#codetext").text(r.response);
}
function fail(error) {
alert("An error has occurred: Code = " = error.code);
}
// 当成功得到一张照片的URI后被调用
function onPhotoURISuccess(imageURI) {
// 获取图片句柄
var $largeImage = $("#largeImage");
$largeImage.show();
// 显示拍摄的照片
$largeImage.attr("src",imageURI);
//上传图片
uploadPhoto(imageURI);
}
function fail(error) {
alert("An error has occurred: Code = " = error.code);
}
$("#show_pic3").bind("tap",function(){
// 从设定的来源处获取图像文件URI
navigator.camera.getPicture(onPhotoURISuccess, onFail, {
quality : 50
});
});
以下是html的部分代码:
<img id="largeImage" src="" style="display:none"/>
以下是java后天代码:
public void uploadImage(IRequestCycle cycle) throws Exception
{
PageData pd = getPageData();
IData data = pd.getData();
HttpServletRequest request = pd.getRequest();
int test = request.getContentLength();
String test3 = request.getParameter("listener");
ServletInputStream is = request.getInputStream();
FileOutputStream fos = new FileOutputStream("D:\\out.txt");
byte[] buff = new byte[2048];
int len = is.read(buff);
while(len != -1)
{
fos.write(buff,0,len);
len = is.read(buff);
}
is.close();
fos.close();
// DiskFileItemFactory factory = new DiskFileItemFactory();
// ServletFileUpload uploader = new ServletFileUpload(factory);
//
// int test = pd.getRequest().getContentLength();
//
// List list = null;
//
// Iterator iter = list.iterator();
// while (iter.hasNext())
// {
// FileItem item = (FileItem) iter.next();
// if (!item.isFormField())
// {
// String name = item.getName();
// long size = item.getSize();
// if((name==null||name.equals("")) && size==0)
// {
// continue;
// }
// }
// }
}
现在的问题就是用phonegap把图片传到服务器的时候,前台js能成才运行并能调用上传成功后的回调函数,问题就是进入后台后int len = is.read(buff);这个len位-1,也就是数据流数据为空,没取到照片的信息,求高手帮忙看看,小弟不甚感激。