2017-06-09 1 views
1

Ich wollte mehrere Dateien in einer Anfrage hochladen. Ich kann Datei auf Server hochladen, aber ich kann nicht mehr als eine Datei hochladen. Hier ist mein CodeAndroid - Wie kann ich mehrere Dateien in einer Anfrage hochladen

try { 
     String uploadId = UUID.randomUUID().toString(); 
     uploadReceiver.setDelegate((SingleUploadBroadcastReceiver.Delegate) this); 
     uploadReceiver.setUploadID(uploadId); 

     //Creating a multi part request 
     new MultipartUploadRequest(this, uploadId, UPLOAD_URL) 
       .addFileToUpload(path, "p_url[]") 
       .addParameter("phone_number", phone_number) 
       .addHeader("Authorization", "Bearer " + token) //Adding token 
       .setNotificationConfig(new UploadNotificationConfig()) 
       .setMaxRetries(2) 
       .startUpload(); //Starting the upload 

    } catch (Exception exc) { 
     Toast.makeText(this, exc.getMessage(), Toast.LENGTH_SHORT).show(); 
    } 

Ich versuche, Bilddateien hochzuladen. Dieses ist Bild-Picker

ImagePicker.create(this) 
       .folderMode(true) // set folder mode (false by default) 
       .folderTitle("Folder") // folder selection title 
       .imageTitle("Tap to select") // image selection title 
       .single() // single mode 
       .multi() // multi mode (default mode) 
       .limit(10) // max images can be selected (999 by default) 
       .showCamera(true) // show camera or not (true by default) 
       .imageDirectory("Camera") // captured image directory name ("Camera" folder by default) 
       .origin(images) // original selected images, used in multi mode 
       .start(PICK_FILE_REQUEST); // start image picker activity with request code 

und Aktivitäts Ergebnis

if (requestCode == PICK_FILE_REQUEST && resultCode == RESULT_OK && data != null) { 

     filePath = data.getData(); 
     images = data.getParcelableArrayListExtra(ImagePickerActivity.INTENT_EXTRA_SELECTED_IMAGES); 
     StringBuilder sb = new StringBuilder(); 
     for (int i = 0; i < images.size(); i++) { 
      Log.d("____IMAGES_____", images.get(i).getPath()); 
      } 
     } 

Log zeigen diese Informationen

D/____IMAGES_____: /storage/emulated/0/DCIM/ios-logo1.png 
D/____IMAGES_____: /storage/emulated/0/DCIM/Screenshot_1491908860.png 
D/____IMAGES_____: /storage/emulated/0/DCIM/product_4.png 

starten Und ich versuche, wie diese

try { 
     String uploadId = UUID.randomUUID().toString(); 
     uploadReceiver.setDelegate((SingleUploadBroadcastReceiver.Delegate) this); 
     uploadReceiver.setUploadID(uploadId); 

     //Creating a multi part request 
     new MultipartUploadRequest(this, uploadId, UPLOAD_URL) 
       .addFileToUpload(path1, "p_url[]") 
       .addFileToUpload(path2, "p_url[]") 
       .addParameter("phone_number", phone_number) 
       .addHeader("Authorization", "Bearer " + token) //Adding token 
       .setNotificationConfig(new UploadNotificationConfig()) 
       .setMaxRetries(2) 
       .startUpload(); //Starting the upload 

    } catch (Exception exc) { 
     Toast.makeText(this, exc.getMessage(), Toast.LENGTH_SHORT).show(); 
    } 
mehrere Datei senden Sie funktioniert gut, aber ich Wählen Sie Dateien mit Dateiauswahl. Und die Anzahl der Dateien wird dynamisch sein. Oberhalb von Code erhalte ich statische Dateien. Benutzer ausgewählte Dateien, und mein Programm muss alle von ihnen hochladen

+0

durchsuchen Sie die Dateianzahl ?? –

+0

Entschuldigung, ich kann Ihren Kommentar nicht lesen –

+0

den vollständigen Code –

Antwort

2

Was Sie tun können, ist das Objekt von MultipartUploadRequest machen und durchlaufen Ihre Dateien zum Hochladen können Sie die Dateien zu diesem Objekt hinzufügen.

MultipartUploadRequest request = new MultipartUploadRequest(this, uploadId, UPLOAD_URL); 

    for(int i=0; i<filesToUploadCount; i++){ 
     //change path and data according to your files 
     request.addFileToUpload(pathForFile, "p_url[i]"); 
    } 
    request.addParameter("phone_number", phone_number); 
    request.addHeader("Authorization", "Bearer " + token); //Adding token 
    request.setNotificationConfig(new UploadNotificationConfig()); 
    request.setMaxRetries(2); 
    request.startUpload(); 
+0

Vielen Dank für Ihre beste Antwort. Es ist Arbeit –

+0

Bitte markieren Sie die Antwort als nützlich. – nitinkumarp

Verwandte Themen