2015-09-09 8 views
5

Ho un input HTML con file di tipo (multipla):Come salvare più oggetti file per analizzare il back-end con php sdk?

<input id="image" type="file" name="dog[]" multiple> 

Come posso caricare loro di analizzare con un tavolo per "Immagini" e "Dog" che utilizzano relazione parse?

O c'è un modo migliore per memorizzare la relazione? Per favore consiglio grazie

Codice tentato:

 <?php 
     require 'vendor/autoload.php'; 

     session_start(); 

     use Parse\ParseClient; 
     use Parse\ParseUser; 
     use Parse\ParseSessionStorage; 
     use Parse\ParseObject; 
     use Parse\ParseFile; 
     use Parse\ParseGeoPoint; 

     ParseClient::initialize('xxx', 'yyy', 'zzz'); 
     ParseClient::setStorage(new ParseSessionStorage()); 
     $currentUser = ParseUser::getCurrentUser(); 

     $filearray = []; 

     $count = 0; 

     if (isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST") { 
      foreach ($_FILES['dog']['name'] as $f => $name) { 
       if ($_FILES['dog']['error'][$f] == 4) { 
        continue; // Skip file if any error found 
       } 
       if ($_FILES['dog']['error'][$f] == 0) { 
        $tmp = $_FILES['dog']['tmp_name'][$count]; 
        $count = $count + 1; 

        $file = ParseFile::createFromData(file_get_contents($tmp), $_FILES['dog']['name']); 
        $file->save(); 
        array_push($filearray, $file); 
       } 
      } 
     } 
    $dogobj = new ParseObject("Dog"); 
    $dogobj->setArray("dogimage", $filearray); 

    try { 
     $dogobj->save(); 
    } catch (ParseException $ex) { 
     echo 'Failed to create new object, with error message: ' . $ex->getMessage(); 
    } 

EDIT :: Grazie per la risposta, questo è l'errore che ho trovato

Notice: Undefined index: restaurant_images in ../index.php on line 31

Attenzione: discussione non valida fornita per foreach() in ../index.php sulla linea 31 nuovo oggetto creato con objectId: fz1hnCembE

Con la linea 31, a cui fa riferimento foreach ($_FILES['restaurant']['name'] as $f => $name) {

Scopo ho salvato successo come u vedere nel messaggio precedente, l'immagine non viene trovato

+0

Ehi @Francis, stai ricevendo qualche eccezione quando provi a salvare l'oggetto? In tal caso, aggiorna la domanda per includerla. –

+0

Ciao @GustavoStraube, ho incluso più dettagli. semplicemente trattate il ristorante come "cane" dato che ho cambiato il nome. Ma il codice rimane lo stesso –

+1

hai visto la risposta di @ cetver? Mi sembra anche che manchi l'attributo 'enctype', che è un errore comune. O forse l'input del file non ha lo stesso nome nel modulo HTML e nel backend (PHP). Controlla anche quello. –

risposta

2

Assicurarsi che forma ha attributo enctype con valore multipart/form-data matrice altrimenti superglobale $_FILES sarà vuoto

<form action="" method="post" enctype="multipart/form-data"> 
    <input id="image" type="file" name="dog[]" multiple> 
    <input type="submit"/> 
</form> 

<?php 
if (isset($_FILES['dog']) === true) { 
    $dog = $_FILES['dog']; 
    $limit = count(current($dog)); 
    for ($i = 0; $i < $limit; $i++) { 
     $error = $dog['error'][$i]; 
     if ($error === UPLOAD_ERR_OK) { 
      $name = $dog['name'][$i]; 
      $type = $dog['type'][$i]; 
      $tmp_name = $dog['tmp_name'][$i]; 
      $size = $dog['size'][$i]; 
      //other code 
     } 
    } 
} 
?> 
+0

Ciao @cetver, il tuo esempio ha aiutato molto. Ora funziona. Grazie mille –