Я получаю код ошибки FileTransferError 3 при загрузке изображений на сервер с использованием ионной - PullRequest
0 голосов
/ 26 июня 2019

Я успешно загружаю изображение из галереи. Но я поражен при загрузке изображений

Это мой код

 pictureUpload(x){ // x is file:///storage/emulated/0/Download/palakkeni.jpg
  if(this.network.noConnection()){
          this.network.showNetworkAlert()
      }else{
          let loading = this.loadingCtrl.create({
            spinner: 'bubbles',
            content: 'Uploading your Picture...'
          });
          loading.present();
          var fileArray = x.split("/");
          let len = fileArray.length;
          var file = fileArray[len - 1];
          let fileTransfer: FileTransferObject = this.transfer.create();;     
          let option: FileUploadOptions = {
            fileKey: 'img',
            fileName: x,
            mimeType: "multipart/form-data",
            headers: {
               authorization : 'e36051cb8ca82ee0Lolzippu123456*='
            },
            params: {
               name: file,
               id: this.empid
            }
          }
          this.completed = false;
          fileTransfer.upload(x, encodeURI("http://forehotels.com:3000/api/upload_employee_image"), option, true)
          .then((data) => {
             this.completed=true;
             loading.dismiss()
             console.log("image uploaded")
           }, (err) => {
             loading.dismiss()
             console.log(err)
          let alert = this.alertCtrl.create({
             title: err.text(),
             subTitle: err.json(),
             buttons: ['Dismiss'],
          });
          alert.present();
          });
        this.view_picture = file;
        this.picture=x
        this.uploaded++              
      }
  }

Ниже выводится моя ошибка

FileTransferError
body: null
code: 3
exception: "Permission denied (missing INTERNET permission?)"
http_status: null
source: "file:///storage/emulated/0/Download/xyz.jpg"
target: "http://companydomainname.com:3000/api/upload_employee_image"

Ниже приводится вывод ионной информации

Ionic:

Ionic CLI: 5.1.0 (C: \ Users \ pramo\ AppData \ Roaming \ npm \ node_modules \ ionic) Ionic Framework: ionic-angular 3.9.2 @ ionic / app-scripts: 3.2.4

Cordova:

Cordova CLI: 9.0.0(cordova-lib@9.0.1) Платформы Cordova: android 8.0.0, браузер 5.0.4 Плагины Cordova: cordova-plugin-ionic-клавиатура 2.1.2, cordova-plugin-ionic-webview 1.2.1, (и еще 18plugins)

Утилита:

cordova-res: 0.4.0, собственный запуск: 0.2.6

Система:

NodeJS: v10.15.3 (C: \ Program Files \ nodejs \ node.exe) npm: 6.4.1 ОС: Windows 10

Мои плагины Cordova

cordova-android-support-gradle-release 3.0.0 "cordova-android-support-gradle-release"

cordova-plugin-app-version 0.1.9 "AppVersion"

cordova-plugin-calendar 5.1.0 "Calendar"

cordova-plugin-contacts 3.0.1 "Contacts"

cordova-plugin-device 2.0.2 "Device"

cordova-plugin-file 6.0.1 "File"

cordova-plugin-file-transfer 1.7.1 "File Transfer"

cordova-plugin-filechooser 1.0.1 "File Chooser"

cordova-plugin-filepath 1.0.2 "FilePath"

cordova-plugin-geolocation 4.0.1 "Geolocation"

cordova-plugin-googleplus 5.3.0 "Google SignIn"

cordova-plugin-headercolor 1.0 "HeaderColor"

cordova-plugin-inappbrowser 3.0.0 "InAppBrowser"

cordova-plugin-ionic-keyboard 2.1.2 "cordova-plugin-ionic-keyboard"

cordova-plugin-ionic-webview 1.2.1 "cordova-plugin-ionic-webview"

cordova-plugin-nativestorage 2.3.1 "NativeStorage"

cordova-plugin-network-information 2.0.1 "Network Information"

cordova-plugin-splashscreen 5.0.2 "Splashscreen"

cordova-plugin-whitelist 1.3.3 "Whitelist"

cordova-plugin-x-socialsharing 5.4.0 "SocialSharing"

cordova-plugin-x-toast 2.6.2 "Toast"

cordova.plugins.diagnostic 4.0.7 "Diagnostic"

es6-promise-plugin 4.1.0 "Promise"

Может кто-нибудь, пожалуйста, руководствомне, почему я получаю эту ошибку и, надеюсь, ят?

Ответы [ 3 ]

0 голосов
/ 27 июня 2019

Разрешение android.name.INTERNET не существует.Используйте это в config.xml или вы также можете поместить это в AndroidManifest.xml:

<uses-permission android:name="android.permission.INTERNET"/>
0 голосов
/ 29 июня 2019

Спасибо за ответы всем.Я решил свою ошибку, но по-другому.Во-первых, я не нашел AndroidManifest.xml в платформах / android

. Вместо этого я нашел файл android.json в платформах / android / android.json

Просматривая содержимоефайл Я нашел следующий код:

"AndroidManifest.xml": {
        "parents": {
          "/manifest": [
            {
              "xml": "<uses-permission android:name=\"android.permission.READ_CALENDAR\" />",
              "count": 1
            },
            {
              "xml": "<uses-permission android:name=\"android.permission.WRITE_CALENDAR\" />",
              "count": 1
            },
            {
              "xml": "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\" />",
              "count": 1
            },
            {
              "xml": "<uses-permission android:name=\"android.permission.USE_CREDENTIALS\" />",
              "count": 1
            }
          ],
          "/*": [
            {
              "xml": "<uses-permission android:name=\"android.permission.READ_CONTACTS\" />",
              "count": 1
            },
            {
              "xml": "<uses-permission android:name=\"android.permission.WRITE_CONTACTS\" />",
              "count": 1
            },
            {
              "xml": "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\" />",
              "count": 1
            },
            {
              "xml": "<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\" />",
              "count": 4
            },
            {
              "xml": "<uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\" />",
              "count": 1
            },
            {
              "xml": "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\" />",
              "count": 1
            },
            {
              "xml": "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\" />",
              "count": 1
            },
            {
              "xml": "<uses-feature android:name=\"android.hardware.location.gps\" />",
              "count": 1
            },
            {
              "xml": "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\" />",
              "count": 1
            },
            {
              "xml": "<uses-permission android:name=\"android.permission.BLUETOOTH\" />",
              "count": 1
            },
            {
              "xml": "<uses-permission android:name=\"android.permission.INTERNET\" />",
              "count": 1
            }
          ],
          "application": [],
          "/manifest/application": [
            {
              "xml": "<provider android:authorities=\"${applicationId}.sharing.provider\" android:exported=\"false\" android:grantUriPermissions=\"true\" android:name=\"nl.xservices.plugins.FileProvider\"><meta-data android:name=\"android.support.FILE_PROVIDER_PATHS\" android:resource=\"@xml/sharing_paths\" /></provider>",
              "count": 1
            }
          ],
          "/*/application": [
            {
              "xml": "<receiver android:enabled=\"true\" android:name=\"nl.xservices.plugins.ShareChooserPendingIntent\"><intent-filter><action android:name=\"android.intent.action.SEND\" /></intent-filter></receiver>",
              "count": 1
            }
          ]
        }
      }

Пожалуйста, не обращайте внимания на закрывающие скобки.

Но здесь я отредактировал свой код и добавил:

{
              "xml": "<uses-permission android:name=\"android.permission.INTERNET\" />",
              "count": 1
            }

Эторешил мою проблему

0 голосов
/ 27 июня 2019

Попробуйте это: Импорт модели:

import { FileTransfer, FileUploadOptions, FileTransferObject } from '@ionic-native/file-transfer';
import { File } from '@ionic-native/file';


imageUpload(imagePath) {
  const fileTransfer: FileTransferObject = this.transfer.create();
  let options: FileUploadOptions = {
      fileKey: 'image',
      fileName: '.png',
      chunkedMode: false,
      //mimeType: "image/jpeg",
    }
    fileTransfer.upload(imagePath, 'Server-URL', options)
      .then((data) => {
      console.log(data+" Uploaded Successfully");          
    }, (err) => {
      console.log(err);
    });
}

Также попробуйте дать разрешение на Интернет в вашем файле config.xml.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...