javascript - Angularjs + Cordova + UploadFile 将 Img 转换为文件以执行 POST

标签 javascript angularjs mobile cordova cordova-3

我正在开发 Cordova 3.3.0 应用程序 + Angularjs。

我正在尝试进行多部分 POST。 服务器正在等待文件,我无法上传 Base64 字符串,并且我有存储在设备中的图像的真实路径。

如果我需要使用它,我还有 Base64 图像。

cordova 不支持输入文件。 显然,出于安全原因,我无法将值设置为输入文件。

所以我必须将 or base64 转换为文件,然后进行发布。

//convert DOM img to file

var data ={

'lumen_moore_editar_usuario_rest[gender]':'M',
'lumen_moore_editar_usuario_rest[file]':file
          };

$http({url: WS_EDIT_USER, method: 'POST',
                data: $.param(data),
                transformRequest: angular.identity,
                headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}
            }).success(function(data, status, headers, config) {
                    console.log("EDITAR IMAGEN SUCCESS "+ data);
                }).error(function(data, status, headers, config) {
                    console.log("EDITAR IMAGEN ERROR "+ data);
                });

这可能吗? 我一直在寻找这个答案,但运气不好,我不想使用 cordova 的 FileTransfer.upload 。

抱歉我的英语不好。

谢谢!

最佳答案

我必须使用 Cordova FileTransfer,它第一次就工作了。 它包含在带有 promise 的服务中。

editProfileUserImg:function(imageURI){

            var deferred = $q.defer();


                            var options = new FileUploadOptions();
                            options.fileKey="file";
                            options.fileName=imageURI.substr(imageURI.lastIndexOf('/')+1);

                            var params = {};

                            options.params = params;
                            var headers={ 'Authorization':ACCESS_TOKEN.Authorization,
                                          'X-WSSE':ACCESS_TOKEN.XWSSE};

                            options.headers = headers;


                            var ft = new FileTransfer();
                            ft.upload(imageURI, encodeURI(WS_CHANCE_PIC_USER),
                                function(r){
                                    console.info("Code = " + r.responseCode);
                                    console.info("Response = " + r.response);
                                    console.info("Sent = " + r.bytesSent);
                                    deferred.resolve(r.response);

                                },
                                function(error){
                                    alert("An error has occurred: Code = " + error.code);
                                    console.error("upload error source " + error.source);
                                    console.error("upload error target " + error.target);
                                    deferred.reject(error);

                                }, options);


            return deferred.promise;
        }

关于javascript - Angularjs + Cordova + UploadFile 将 Img 转换为文件以执行 POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22565822/

相关文章:

javascript - 为什么我无法访问此 ng-repeat 中的数据?

javascript - 为列表项 ng-repeat angular 创建唯一的错误消息

jquery - 菜单没有出现在手机上?

javascript - 在显示 div 时更改背景颜色

javascript - 未捕获的语法错误 : Unexpected token :

javascript - 使用javascript将python/flask变量注入(inject)HTML表格单元格

html - -Windows Phone 中的 webkit-tap-highlight-color?

javascript - 使用javascript映射一个对象数组,它返回一个未定义的值

html - angular.js 中的垂直进度条未显示正确的高度

javascript - 网站的移动版本不适合水平