如何在上传前预览图像

时间:2015-05-04 05:29:47

标签: javascript angularjs ionic-framework

我想在离子框架中上传之前预览图像,我已尝试使用预览进行角度文件上传,它在浏览器中运行良好,但没有使用移动设备。这是我的代码。

controller.js

$scope.fileReaderSupported = window.FileReader != null && (window.FileAPI == null || FileAPI.html5 != false);
        $scope.generateThumb = function (files) {
            var file = files[0];
            if (file != null) {
                if ($scope.fileReaderSupported && file.type.indexOf('image') > -1) {
                    $timeout(function () {
                        var fileReader = new FileReader();
                        fileReader.readAsDataURL(file);
                        fileReader.onload = function (e) {
                            $timeout(function () {
                                file.dataUrl = e.target.result;
                                return false;
                            });
                        }
                    });
                }
            }
        }
        function uploadUsing$upload(file, user) {
            $scope.vPassword = user.vPassword;
            $ionicLoading.show({
                template: spinner_android
            });
            $http.post(base_url + 'signup.php', {user: user}).
                    success(function (data, status, headers, config) {
                        if (data.message == 'success') {
                            if (file != null || file != undefined) {
                                file.upload = $upload.upload({
                                    url: base_url + 'upload.php',
                                    method: 'POST',
                                    fields: {iUserID: $scope.iUserID},
                                    file: file,
                                    fileFormDataName: 'vImage',
                                });
                                file.upload.then(function (response) {
                                    $timeout(function () {
                                        file.result = response.data;
                                    });
                                }, function (response) {
                                    if (response.status > 0)
                                        $scope.errorMsg = response.status + ': ' + response.data;
                                });

                            $ionicLoading.hide();
                            $scope.reg = {};
                            $scope.showSuccessPopup(data.data.iUserID);
                            //$state.go('login');
                        } else {
                            $ionicLoading.hide();
                            $scope.errorMsg = 'Email already exist';
                        }
                    }).
                    error(function (data, status, headers, config) {
                        // called asynchronously if an error occurs
                        // or server returns response with an error status.
                    });
        }
    })

signup.html

<form on-valid-submit="postForm(files, reg)" name="registrationForm" novalidate >
        <div class="signup-img" ng-file-select ng-model="files" id="files" ng-change="generateThumb(files)">&nbsp;
            <img ng-hide="files.length > 0" src="./img/profile-image.png" width="110" height="107" class="title-image">
            <div ng-show="files.length > 0" class="response">
                <div class="sel-file" ng-repeat="f in files">
                    <div class="thumbImgDiv signup-img">
                        <div class="myCancelBtn" ng-click="cancelImage()" ><i class="icon-close fa-fw" style=""></i></div>
                        <img ng-show="f.dataUrl" ng-src="{{f.dataUrl}}"  width="110" height="107" class="title-image profile-image">
                    </div>
                </div>
            </div>
        </div>
        <div class="fajr-list text-center padding" style="color:red">{{errorMsg}}</div>
        <div class="list fajr-list sign-up">
            <!--(registrationForm.vFirst.$dirty || submitted) && registrationForm.vFirst.$error.required-->
            <div class="form-errors" ng-show="registrationForm.$submitted || registrationForm.vFirst.$touched" >
                <div ng-show="registrationForm.vFirst.$error.required" class="form-error">Required.</div>
            </div>
            <label class="item item-input" ng-class="{ 'has-error' : registrationForm.vFirst.$invalid && registrationForm.$submitted,'valid' : registrationForm.vFirst.$valid && registrationForm.$submitted}">
                <i class="icon ion-person"></i>
                <input type="text" placeholder="First Name" class="text" name="vFirst" ng-model="reg.vFirst" required ng-focus="showKeyboard()" ng-blur="hideKeyboard()">
                <!--<i class="icon ion-alert-circled error"></i>-->
            </label>
            <div class="form-errors"  ng-show="registrationForm.$submitted || registrationForm.vLast.$touched" >
                <div ng-show="registrationForm.vLast.$error.required" class="form-error">Required.</div>
            </div>
            <label class="item item-input" ng-class="{ 'has-error' : registrationForm.vLast.$invalid && registrationForm.$submitted,'valid' : registrationForm.vLast.$valid && registrationForm.$submitted}">
                <i class="icon ion-person"></i>
                <input type="text" placeholder="Last Name" class="text" name="vLast" ng-model="reg.vLast" required="" ng-focus="showKeyboard()" ng-blur="hideKeyboard()">
                <!--<i class="icon ion-alert-circled error"></i>-->
            </label>

            <!--<div class="clear"></div>-->
            <div class="form-errors"  ng-show="registrationForm.$submitted || registrationForm.vEmail.$touched">
                <span ng-show="registrationForm.vEmail.$error.required" class="form-error">Required.</span>
                <span ng-show="registrationForm.vEmail.$error.email" class="form-error">This is not a valid email.</span>
            </div>
            <label class="item item-input" ng-class="{ 'has-error' : registrationForm.vEmail.$invalid && registrationForm.$submitted,'valid' : registrationForm.vEmail.$valid && registrationForm.$submitted}">
                <i class="icon ion-email"></i>
                <input type="email" placeholder="E-mail" class="email" name="vEmail" ng-model="reg.vEmail" required="" ng-focus="showKeyboard()" ng-blur="hideKeyboard()">
                <!--<i class="icon ion-alert-circled error"></i>-->
            </label>
            <div class="form-errors"  ng-show="registrationForm.$submitted || registrationForm.vPassword.$touched">
                <span ng-show="registrationForm.vPassword.$error.required" class="form-error">Required.</span>
            </div>
            <label class="item item-input" ng-class="{ 'has-error' : registrationForm.vPassword.$invalid && registrationForm.$submitted,'valid' : registrationForm.vPassword.$valid && registrationForm.$submitted}">
                <i class="icon ion-locked"></i>
                <input type="password" placeholder="Password" class="pass" name="vPassword" ng-model="reg.vPassword" required="" ng-focus="showKeyboard()" ng-blur="hideKeyboard()">
                <!--<i class="icon ion-alert-circled error"></i>-->
            </label>

            <div class="form-errors"  ng-show="registrationForm.$submitted || registrationForm.vConfirmPassword.$touched">
                <span ng-show="registrationForm.vConfirmPassword.$error" class="form-error">{{registrationForm.vConfirmPassword.$error.required ? 'Required' : registrationForm.vConfirmPassword.$error.match ? 'Must match the password' : '' }}</span>
            </div>
            <label class="item item-input" ng-class="{ 'has-error' : registrationForm.vConfirmPassword.$error && registrationForm.vConfirmPassword.$invalid && registrationForm.$submitted,'valid' : registrationForm.vConfirmPassword.$valid && registrationForm.$submitted }">
                <i class="icon ion-locked"></i>
                <input type="password" placeholder="Confirm Password" class="pass" name="vConfirmPassword" match="reg.vPassword" ng-model="reg.vConfirmPassword" required ng-focus="showKeyboard()" ng-blur="hideKeyboard()" >
                <!--<i class="icon ion-alert-circled error"></i>-->
            </label>
            <label class="item item-input">
                <i class="icon ion-calendar"></i>
                <input type="date" placeholder="Date of Birth" class="text" ng-model="reg.vDob" name="vDob"  >
            </label>
            <div class="form-errors"  ng-show="registrationForm.$submitted || registrationForm.eGender.$touched">
                <span ng-show="registrationForm.eGender.$error.required" class="form-error">Please select gender.</span>
            </div>
            <label class="item item-input item-select item-select-select " ng-class="{ 'has-error' : registrationForm.eGender.$invalid && registrationForm.$submitted,'valid' : registrationForm.eGender.$valid && registrationForm.$submitted}">
                &nbsp;
                <i class="icon ion-woman"></i>
                <select ng-model="reg.eGender" required name="eGender">
                    <option value="" selected>Gender</option>
                    <option value="Male">Male</option>
                    <option value="Female">Female</option>
                </select>
                <!--<i class="icon ion-alert-circled error"></i>-->
            </label>

            <div class="clear"></div>
            <label class="item item-input">
                <i class="icon ion-ios-telephone"></i>
                <input type="text" placeholder="Phone Number" class="text" name="vPhone" ng-model="reg.vPhone"  ng-focus="showKeyboard()" ng-blur="hideKeyboard()">
            </label>
            <label class="item item-input">
                <i class="icon ion-location"></i>
                <input type="text" placeholder="Address" class="text" name="vtAddress" ng-model="reg.tAddress"  ng-focus="showKeyboard()" ng-blur="hideKeyboard()">
            </label>
            <div class="form-errors" ng-show="registrationForm.$submitted || registrationForm.vCountry.$touched">
                <span ng-show="registrationForm.vCountry.$error.required" class="form-error">Please select country.</span>
            </div>
            <!--                <label class="item item-input gender-block item-select item-select-select "  ng-class="{ 'has-error' : registrationForm.vCountry.$invalid && registrationForm.$submitted,'valid' : registrationForm.vCountry.$valid && registrationForm.$submitted}">
                                &nbsp;
                                <i class="icon ion-earth"></i>
                                <country-select data-ng-model="vCountry" required name="vCountry"  ng-class="{ 'has-error' : registrationForm.vCountry.$invalid && registrationForm.$submitted,'valid' : registrationForm.vCountry.$valid && registrationForm.$submitted}"></country-select>
                            </label>-->
            <label class="item item-input gender-block item-select item-select-select " ng-class="{ 'has-error' : registrationForm.vCountry.$invalid && registrationForm.$submitted,'valid' : registrationForm.vCountry.$valid && registrationForm.$submitted}">
                &nbsp;
                <i class="icon ion-earth"></i>
                <select ng-model="reg.vCountry" required name="vCountry" data-ng-change="getCities(reg.vCountry)"  class="select-item-item">
                    <option value="" selected>Country</option>
                    <option ng-repeat="country in countries"
                            value="{{country.Code}}">
                        {{country.Name}}
                    </option>
                    <!--                        <option value="India">India</option>
                                            <option value="Pakistan">Pakistan</option>-->
                </select>
            </label>
            <div class="form-errors"  ng-show="registrationForm.$submitted || registrationForm.vCity.$touched">
                <span ng-show="registrationForm.vCity.$error.required" class="form-error">Please select city.</span>
            </div>
            <label class="item item-input gender-block item-select item-select-select " ng-class="{ 'has-error' : registrationForm.vCity.$invalid && registrationForm.$submitted,'valid' : registrationForm.vCity.$valid && registrationForm.$submitted}">
                &nbsp;
                <i class="icon ion-map"></i>

                <select ng-model="reg.vCity" required name="vCity" class="select-item-item" >
                    <option value="" selected>City</option>
                    <option ng-repeat="city in cities"
                            value="{{city.Name}}">
                        {{city.Name}}
                    </option>
                    <!--                                                <option value="Ahmedabad">Ahmedabad</option>
                                                                    <option value="Baroda">Baroda</option>
                                                                    <option value="Jamnagar">Jamnagar</option>
                                                                    <option value="Rajkot">Rajkot</option>-->
                </select>
                <!--<i class="icon ion-alert-circled error"></i>-->
            </label>
        </div>
        <button type="submit" id="submitForm" style="display: none"></button>
    </form>

我已经搜索了文件上传以及ionic / cordova的预览但我没有得到我的问题的答案。如果教程或示例有任何良好的链接,请告诉我。

修改

我发现它只适用于html5设备。我没有预览哪些设备不支持html5。

0 个答案:

没有答案