Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπερα

 

Εχω φτιαξει κωδικα που χρησιμοποιω το drag'n'drop της HTML5 μαζι με το XHR2 για να κανω upload εικονων σε σερβερ.

 

Στον σερβερ το αρχειο που κανονιζει την αποθηκευση κτλ ειναι σε php. Θελω να πεταει τα καταλληλα μηνυματα στον client , οπως  "Saved", "Error" , "Not An Image" κτλ

 

Ο ποιο απλος τροπος που σκεφτηκα ειναι στον σερβερ να βαλω

header('Location:multinsert2.php?er1=1');

και στον client

if ($_GET['er1']) {echo 'Saved.</br>';}

Και οπως καταλαβατε, δεν δουλευει. Η εικονα αποθηκευετε κανονικοτατα, αλλα δεν πεταει τα αντιστοιχα μηνυματα.

 

Το αρχειο στον σερβερ περιεχει μονο php και το αρχειο του client εχει καταληξη .php

 

Μηπως δεν δουλευει επειδη στον client χρησιμοποιω javascript και οχι την "παραδοσιακη" φορμα για upload? Το λεω επειδη δινω στον χρηστη την εναλλακτικη να ανεβασει χρησιμοποιωντας τη φορμα και οταν το κανει με φορμα, τα μυνηματα εμφανιζονται κανονικοτατα.

 

Εχω κολλησει, δε μπορω να σκεφτω κατι για να το λυσω...

 

Καμια βοηθεια?

 

Ο κωδικας....

 

 

client side file ονοματι multinsert2.php, κομματια κωδικα για upload και εμφανιση μηνυματων

var xhr = new XMLHttpRequest();
      xhr.open('POST', 'upload.php');
      xhr.onload = function() {
                  if (xhr.status === 200)         
                  {                                      
                              progress.value = progress.innerHTML = 100;
alert('all ok');                      
          } 

        else {alert('hmmm, not today');}
      };
xhr.send(formData);

<?php
if ($_GET['er1']) {echo 'error.</br>';}
if ($_GET['er2']) {echo 'uploaded.</br>';}
if ($_GET['er3']) {echo 'image already exists.</br>';}
if ($_GET['er4']) {echo 'saved.</br>';}
if ($_GET['er5']) {echo 'error, invalid file.</br>';}
?>

και σερβερ side , αποθηκευση και δημιουργια μηνυματων για client

if ((($_FILES["file"]["type"] == "image/gif")
 || ($_FILES["file"]["type"] == "image/jpeg")
 || ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 4000000))
if ($_FILES["file"]["error"] > 0)
     {
         header('Location:multinsert2.php?er1=1');//error
}
else
{header('Location:multinsert2.php?er2=1');//uploaded
}
     if (file_exists("cultmapsite/upload" . $_FILES["file"]["name"]))
       {
            header('Location:multinsert2.php?er3=1');//image already exists

       } 

       else
       {
       move_uploaded_file($_FILES["file"]["tmp_name"],
       "upload/" . $_FILES["file"]["name"]);
        header('Location:multinsert2.php?er4=1');//saved

    }
     }
   }
 else
   {
       header('Location:multinsert2.php?er5=1');//error, invalid file

   }

Ευχαριστω...

Δημοσ.

Αντί για την XMLHttpRequest μπορείς να χρησιμοποιήσεις jquery.

 

Τώρα στο θέμα μας.

 

Υπάρχει η index.php όπου καλείς την upload.php μέσω του XMLHttpRequest.

Η σελίδα upload.php κάνει ΧΧΧΧ πράγματα και μπορείς να γυρίσεις ΧΧΧΧΧ περιεχόμενο στην σελίδα που κάλεσες την upload.php, δηλαδή την index.php

 

Αυτό γίνεται ως εξής, θα προσπαθήσω να το πω όσο πιο απλά γίνεται:

στην upload.php ότι είναι HTML αυτό γυρνάει πίσω. Δηλαδή εάν γράψεις ένα

<div>Hello</div>

ή σε php

echo "<div>Hello</div>";

 

αυτό μπορείς να το πάρεις στην index.php ΜΕΣΩ javascript και να το διαχειριστείς. Τώρα για να πάρεις το περιεχόμενο που επιστρέφει η upload.php, στην index.php γράφεις

var xhr = new XMLHttpRequest();
xhr.open('POST', 'upload.php');
xhr.onload = function() {
if (xhr.status === 200) 
{
data = xhr.responseText;
alert(data); 
} 
else {alert('hmmm, not today');}
};
xhr.send(formData);
 
  • Like 1
Δημοσ.

Link.png Site:

 

Ρε φίλε, ευχαριστω πολύ, είχε κολλήσει το μυαλο μου με την php και ουτε που σκεφτηκα να εκμεταλευτω το XHR...

Δουλεψε ακριβως με τον τρόπο που ειπες.

 

Μαλλον πρεπει να κανω πιο συχνα διαλειματα...

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...