在AngularJs中将图像从文件系统发送到服务器

时间:2014-12-16 13:57:47

标签: javascript angularjs file-upload ionic-framework

我需要将后台多图像和一些数据发送到服务器。

我在我的Android应用程序中使用ionicframework(带有angularjs)。 我正在使用angular-file-upload(directive),以下代码是我的工厂:

if(angular.isArray(arrPictures) && arrPictures.length > 0) {

       var files = [];
       for(var i=0; i<arrPictures.length; i++) {
           files.push(arrPictures[i].photo); //it is like file://my_path/myImage.jpg
       }

        $upload.upload({
            url: API_POST_ANSWER,
            method: 'POST',
            data: {
                "idSurvey": idSurvey,
                "idOAM": idOAM,
                "idOPM": idOPM,
                "score": score,
                "date": date,
                "answerJson": answersJson,
                "address": address,
                "latitude": latitude,
                "longitude": longitude
            },
            file: files,
            fileFormDataName: "pictures"
        }).progress(function (evt) {
            //progress
            alert('progress: ' + parseInt(100.0 * evt.loaded / evt.total) + '% file :'+ evt.config.file.name);
        }).success(function (data, status, headers, config) {
            // file is uploaded successfully
            alert('file ' + config.file.name + 'is uploaded successfully. Response: ' + data);
        }).error(function (ex) {
            //error
            alert("error");
            alert(ex);
        });

   } 

现在我遇到了问题,因为服务器获取字符串(路径字符串)而不是文件 我的问题是“如何将我的路径字符串转换为文件对象以将其当前发送到服务器?”

1 个答案:

答案 0 :(得分:0)

我的解决方案是将图像转换为base64并将其存储到本地db(使用sqllite)。 之后,当我想发送图像时:我查询我的数据库,我得到base64字符串并将其发送到我的休息服务。

所有这些解决方案都使用$ upload指令而不是$ http服务。