因为业务的需要,需要实现一个照片上传的功能,但因为是html5开发的app,不希望用原生态的方法,恰好phonegap中有上传的文件的接口,于是乎试验了一下,经过一天的奋战,总算还是涉险过关了,说一下思路吧,首先是拍照的功能,拍照这个依托phonegap的api实现起来并不难,拍摄好的照片是一个文件路径,在代码中将这个路径传给上传接口,这个接口是post类型的,这些都是phonegap封装好的,然后是服务器那边的接收,lz是。net流派的,采用的是wcf的接收方式,由于发送的是文件流,获得文件流之后使用File的SavaAs方法,将文件存到文件夹这边完成,可喜可贺呵呵
如果有问题可来我的Phonegap安卓群交流:250395324
附代码:
var options = new FileUploadOptions();
options.fileKey = "fileAddPic";//用于设置参数,对应form表单里控件的name属性,这是关键,废了一天时间,完全是因为这里,这里的参数名字,和表单提交的form对应
var imagefilename = Number(new Date())+".jpg";
options.fileName=imagefilename;
//options.fileName = imageURI.substr(imageURI.lastIndexOf('/') + 1);
//如果是图片格式,就用image/jpeg,其他文件格式上官网查API
options.mimeType = "image/jpeg";
options.mimeType = "multipart/form-data";//这两个参数修改了,后台就跟普通表单页面post上传一样 enctype="multipart/form-data"
//这里的uri根据自己的需求设定,是一个接收上传图片的地址
var uri = encodeURI("http://server.com/aaa.svc/PostWithImageData/");
//alert(imageURI);
//alert(uri);
options.chunkedMode = false;
var params = new Object();
params.fileAddPic = imageURI;
options.params = params;
var ft = new FileTransfer();
ft.upload(imageURI, uri, win, fail, options);
服务器端代码:
HttpPostedFile file = HttpContext.Current.Request.Files["fileAddPic"];
try
{
string targetFilePath = "D:\\aaa\\" + file.FileName;
file.SaveAs(targetFilePath);
}
catch (Exception e)
{
log.Error(">>>发生错误,详情如下:");
log.Error(e);
}
return file.FileName;
参考: https://groups.google.com/forum/?fromgroups=#!topic/phonegap/3XhwEyPnw6I