how to transfer the taken image using ngcordova fi

2019-02-23 03:37发布

问题:

I am trying to upload image to my FTP.

what i have achived so far is in this plnkr

my cordova file transfer looks like

$scope.upload =function(){

      var options = {
         fileKey: "file",
         fileName: "gopi",
         chunkedMode: false,
         mimeType: "image/jpeg",
         params : {'user_token':'Chandru@123', 'user_email':'wepopusers'} // directory represents remote directory,  fileName represents final remote file name
       };
       console.log(options);
      $cordovaFileTransfer.upload('ftp://308.3d8.myftpupload.com/',  MyService.getImgPath(), options)
        .then(function(result) {
          // Success!
          console.log(result);
          console.log("SUCCESS: " + JSON.stringify(result.response));
          alert('ftp success');
        }, function(err) {
          // Error
          console.log(err);
          alert('ftp fail');
          console.log("ERROR: " + JSON.stringify(err));
        }, function (progress) {
          // constant progress updates
          console.log(progress);
        });

    };

My response of my error function for cordova file looks like

FileTransferError {code: 2, source: "file:///storage/sdcard0/Android/data/com.ionicframework.camera108827/cache/1462186990291.jpg", target: "ftp://308.3d8.myftpupload.com/", http_status: null, body: null…}body: nullcode: 2exception: nullhttp_status: nullsource: "file:///storage/sdcard0/Android/data/com.ionicframework.camera108827/cache/1462186990291.jpg"target: "ftp://308.3d8.myftpupload.com/"proto: Object

I have button TakePicture which will take the pic and show to the user and also I have a function to upload using cordovafiletransfer $scope.upload .

my ftp host is ftp://308.3d8.myftpupload.com/ username and password is given in my coding in this i have a folder name called gopi where my image should store.

my path of the image taken is in imageURI parameter so i used services to set the path.

steps I’m in confusion

1) I am not able to understand the var options object in cordova file transfer plugin.

2) I am not getting any erro while remote debugging but i am only invoking my error funtion in my cordova file transfer.

How can i update my taken image to FTP using IONIC

UPDATE

Thanks to gandhi's answer https://github.com/xfally/cordova-plugin-ftp some how i managed to connect to ftp without multipart.

but sill facing error in this

$window.cordova.plugin.ftp.upload("/ping", "/gopi/ping", function(percent) {

i don't know what to in the first argument and second.

$window.cordova.plugin.ftp.upload("/default.prop", "/gopi/default.prop", function(percent) {

the above line success fully posted to my ftp but i am not able to post my image which is stored in my ping variable.

https://plnkr.co/edit/ETGmdl4B0d5dlHWdJQ9m?p=info

回答1:

The answer to your first question is available in the official documentation of file transfer plugin. The excerpt is as follow,

options: Optional parameters (Object). Valid keys:

fileKey: The name of the form element. Defaults to file. (DOMString)
fileName: The file name to use when saving the file on the server. Defaults to image.jpg. (DOMString)
httpMethod: The HTTP method to use - either PUT or POST. Defaults to POST. (DOMString)
mimeType: The mime type of the data to upload. Defaults to image/jpeg. (DOMString)
params: A set of optional key/value pairs to pass in the HTTP request. (Object, key/value - DOMString)
chunkedMode: Whether to upload the data in chunked streaming mode. Defaults to true. (Boolean)
headers: A map of header name/header values. Use an array to specify more than one value. On iOS, FireOS, and Android, if a header named Content-Type is present, multipart form data will NOT be used. (Object)

Check out this link for more info.

For your second question, try getting the error code in the error callback function and try to narrow down the problem.

Update: I guess ftp upload is not possible using file transfer plugin. The plugin definition itself states "The FileTransfer object provides a way to upload files using an HTTP multi-part POST or PUT request, and to download files"

You may have to look at this for ftp client for ftp uploads.