cordova 拍照上传!

1,安装需要的插件
不管是从相册中选择图片上传,还是拍照上传。我们都需要如下先安装如下三个插件:Camera(相机)、file(文件访问操作)、fileTransfer(文件传输)。
如果没有安装的话,先安装下:
1
2
3
cordova plugin add cordova-plugin-camera
cordova plugin add cordova-plugin-file
cordova plugin add cordova-plugin-file-transfer

2,选择设备照片并上传 
下面代码样例,点击按钮后会打开系统相册来选择照片,选中的照片会显示在页面上。同时会把选择的照片上传到服务器。
        原文:Cordova - 从相册中选择照片并上传,以及拍照上传       原文:Cordova - 从相册中选择照片并上传,以及拍照上传
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<!DOCTYPE html>
<html>
    <head>
        <title>Capture Photo</title>
        <meta http-equiv="Content-type" content="text/html; charset=utf-8">
        <script type="text/javascript" charset="utf-8" src="cordova.js"></script>
        <script type="text/javascript" charset="utf-8">
            var pictureSource;
            var destinationType;
 
            document.addEventListener("deviceready",onDeviceReady,false);
 
            //Cordova加载完成会触发
            function onDeviceReady() {
                pictureSource=navigator.camera.PictureSourceType;
                destinationType=navigator.camera.DestinationType;
            }
 
            //获取照片
            function getPhoto(source) {
                //quality : 图像的质量,范围是[0,100]
                navigator.camera.getPicture(onPhotoURISuccess,
                  function(error){console.log("照片获取失败!")},
                  { quality: 50, destinationType: destinationType.FILE_URI, sourceType: source });
            }
 
            //获取照片成功
            function onPhotoURISuccess(imageURI) {
                //打印出照片路径
                console.log(imageURI);
                //显示照片
                var largeImage = document.getElementById('largeImage');
                largeImage.style.display = 'block';
                largeImage.src = imageURI;
 
                upload(imageURI);
            }
 
          //上传文件
          function upload(fileURL) {
 
            //上传成功
            var success = function (r) {
                console.log("上传成功! Code = " + r.responseCode);
            }
 
            //上传失败
            var fail = function (error) {
                alert("上传失败! Code = " + error.code);
            }
 
            var options = new FileUploadOptions();
            options.fileKey = "file1";
            options.fileName = fileURL.substr(fileURL.lastIndexOf('/') + 1);
            //options.mimeType = "text/plain";
 
            //上传参数
            var params = {};
            params.value1 = "test";
            params.value2 = "param";
            options.params = params;
 
            var ft = new FileTransfer();
            //上传地址
            var SERVER = "http://www.hangge.com/upload.php"
            ft.upload(fileURL, encodeURI(SERVER), success, fail, options);
          };
 
        </script>
    </head>
    <body style="padding-top:50px">
        <button style="font-size:23px;" onclick="getPhoto(pictureSource.PHOTOLIBRARY);">
            从相册选择照片并上传
        </button> <br>
        <img style="display:none;" id="largeImage" src="" width="300px" />
    </body>
</html>

3,拍照并上传
下面代码样例,当点击按钮后会掉用摄像头拍照,并在页面上显示出来。同时拍摄照片会上传到服务器上。
      原文:Cordova - 从相册中选择照片并上传,以及拍照上传       原文:Cordova - 从相册中选择照片并上传,以及拍照上传
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<!DOCTYPE html>
<html>
    <head>
        <title>Capture Photo</title>
        <meta http-equiv="Content-type" content="text/html; charset=utf-8">
        <script type="text/javascript" charset="utf-8" src="cordova.js"></script>
        <script type="text/javascript" charset="utf-8">
 
            var destinationType;
 
            document.addEventListener("deviceready",onDeviceReady,false);
 
            //Cordova加载完成会触发
            function onDeviceReady() {
                destinationType=navigator.camera.DestinationType;
            }
 
            //拍照
            function capturePhoto() {
                //拍照并获取Base64编码的图像(quality : 存储图像的质量,范围是[0,100])
                navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 50,
                                            destinationType: destinationType.FILE_URI }
                                            );
            }
 
            //拍照成功
            function onPhotoDataSuccess(imageURL) {
                var smallImage = document.getElementById('smallImage');
                smallImage.style.display = 'block';
                smallImage.src = imageURL;
                //开始上传
                upload(imageURL);
            }
 
            //拍照失败
            function onFail(message) {
                alert('拍照失败: ' + message);
            }
 
            //上传文件
            function upload(fileURL) {
 
              //上传成功
              var success = function (r) {
                  console.log("上传成功! Code = " + r.responseCode);
              }
 
              //上传失败
              var fail = function (error) {
                  alert("上传失败! Code = " + error.code);
              }
 
              var options = new FileUploadOptions();
              options.fileKey = "file1";
              options.fileName = fileURL.substr(fileURL.lastIndexOf('/') + 1);
              options.mimeType = "image/jpeg";
 
              //上传参数
              var params = {};
              params.value1 = "test";
              params.value2 = "param";
              options.params = params;
 
              var ft = new FileTransfer();
              //上传地址
              var SERVER = "http://www.hangge.com/upload.php"
              ft.upload(fileURL, encodeURI(SERVER), success, fail, options);
            };
        </script>
    </head>
    <body style="padding-top:50px">
        <button style="font-size:23px;" onclick="capturePhoto();">拍摄照片并上传</button> <br>
        <img style="display:none;width:240px;height:320px;" id="smallImage" src="" />
    </body>
</html>

原文出自:www.hangge.com  
posted @ 2017-08-02 11:23  rainMicro  阅读(2165)  评论(0编辑  收藏  举报