2017-10-04 1 views
-4

Je suis nouveau au tapuscrit et essaie de télécharger une image de ma carte SD mobile. Je reçois le chemin de l'image lorsque je parcours l'image. Et quand je passe cela avec les données de formulaire Aucun ne revient. Ce serait génial si quelqu'un donnait un coup de main pour comprendre le problème.Téléchargement d'images à l'aide de caractères dactylographiés dans un formulaire mobile retour de données aucun

J'utilise la bibliothèque "nativescript-imagepicker" pour obtenir l'image de carte SD ..

sendPicture(uri: string, modelContext: any){ 
    let _formData = new FormData(); 
    _formData.append("profile_image", uri); 
    let body = _formData; 
    updateAvatarService(this.userToken,body).subscribe(data => { 
    }); 
} 

updateAvatarService(token,body): Observable<any> { 
      return this.httpClass.patchMethodWithToken(URL,token,body) 
      .map(response => { 
      return response; 
      }) 
    } 

patchMethodWithToken(url: string, token: string, data: Object) { 
    let headers = new Headers(); 
    headers.append('Content-Type', 'application/json'); 
    headers.append('Authorization', "Token " + token); 
    headers.append('Content-Disposition', "form-data");  
     let options = new RequestOptions({ headers: headers }); 
    if (this.checkNetworkConnection()) { 
     return this.http 
     .patch(url, JSON.stringify(data), options) 
     .map(response => { 
      return response.json(); 
     }) 
     .catch(this.handleErrors); 
    } 
    } 
+0

fournit plus d'informations avec le code – Dlucidone

+0

S'il vous plaît vérifier le code que j'ai ajouté maintenant .. Merci – vishnuc156

Répondre

1

Pour télécharger multipart en tant que forme de données que j'utilisais Nativescript-background-Http est inférieure à la mise en œuvre de l'échantillon et travaille pour moi -

import { session, Session, Task } from "nativescript-background-http"; 
var session1 = session("image-upload"); 

uploadImage(fileUri, id) { 

let imageName = this.extractImageName(fileUri); 
let headers = new Headers(); 
headers.append("Authorization", Config.token); 
headers.append("CenterId", Config.CenterId); 
var options = new RequestOptions({ headers: headers }); 
var request = { 
    url: Config.putImage + id + "/upload", 
    method: "POST", 
    headers: { 
    "Authorization": Config.token, 
    "X-Center-Id": Config.XCenterId, 
    "Content-Type": "application/octet-stream", 
    "File-Name": imageName 
    }, 

    description: "{ 'uploading': " + imageName + " }" 
}; 
var params = [{ name: "image", filename: fileUri, mimeType: 'image/jpeg' }]; 
var task = session1.multipartUpload(params, request); 
task.on("progress", logEvent); 
task.on("error", logEvent); 
task.on("complete", logEvent); 

function logEvent(e) { 
    console.log(".........................") 
    console.log("currentBytes: " + e.currentBytes); 
    console.log(".........................") 
    console.log("totalBytes: " + e.totalBytes); 
    console.log(".........................") 
} 

return task; 
} 

//Extract file Name 
extractImageName(fileUri) { 
var pattern = /[^/]*$/; 
var imageName = fileUri.match(pattern); 
return imageName; 
} 
+0

Dlucidone. Mon serveur utilise la méthode PATCH, corps comme formadata avec la clé "profile_image": "img_name.png". Ma question est Comment passer ce corps au code ci-dessus? – vishnuc156

+0

utilisez la méthode: "PATCH" et "File-Name": img_name "et passez-le à -> cette fonction uploadImage (fileUri, nom_méthode, ou tout) – Dlucidone