1#
原文:http://blog.cfxixi.com/post/2012/10/14/phonegap%E5%AE%9E%E7%8E%B0%E7%85%A7%E7%89%87%E4%B8%8A%E4%BC%A0.aspx
因为业务的需要,需要实现一个照片上传的功能,但因为是html5开发的app,不希望用原生态的方法,恰好phonegap中有上传的文件的接口,于是乎试验了一下,经过一天的奋战,总算还是涉险过关了,说一下思路吧,首先是拍照的功能,拍照这个依托phonegap的api实现起来并不难,拍摄好的照片是一个文件路径,在代码中将这个路径传给上传接口,这个接口是post类型的,这些都是phonegap封装好的,然后是服务器那边的接收,lz是。net流派的,采用的是wcf的接收方式,由于发送的是文件流,获得文件流之后使用File的SavaAs方法,将文件存到文件夹这边完成,可喜可贺呵呵

附代码:

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