input file verzenden met javascript

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Stefan H

stefan H

11/07/2013 08:35:58
Quote Anchor link
Wie kan mij helpen?

ik heb een formuliertje gemaakt waar mensen ook een foto kunnen toevoegen.

bij de knop verzenden worden de gegevens via javascript naar php verstuurd. nu worden alle naam en tekst velden netjes verwerkt maar helaas de foto niet . dit loopt vast bij het javascript weet iemand wat ik hier moet aanpassen ?

alvast bedankt voor je reactie
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
function registreer(){
    // Create our XMLHttpRequest object
    var hr = new XMLHttpRequest();

var
url = "http://localhost:8080/verwerkregistratie.php";
    var
bedrijfsnaam = document.getElementById("bedrijfsnaam").value;
    var
straat = document.getElementById("straat").value;
    var
postcode = document.getElementById("postcode").value;
    var
postcodeletter = document.getElementById("postcodeletter").value;
    var
plaats = document.getElementById("plaats").value;
    var
land = document.getElementById("land").value;
    var
naam = document.getElementById("naam").value;
    var
telefoonnummer = document.getElementById("telefoonnummer").value;
    var
emailadres = document.getElementById("emailadres").value;
    var
wachtwoord = document.getElementById("wachtwoord").value;
    var
passwordcheck = document.getElementById("passwordcheck").value;
    var
algvw = document.getElementById("algvw").value;
    var
foto= document.getElementById("foto").value;
    
    var
vars = "bedrijfsnaam="+bedrijfsnaam+"&straat="+straat+"&postcode="+postcode+"&postcodeletter="+postcodeletter+"&plaats="+plaats+"&land="+land+"&naam="+naam+"&telefoonnummer="+telefoonnummer+"&emailadres="+emailadres+"&wachtwoord="+wachtwoord+"&passwordcheck="+passwordcheck+"&algvw="+algvw+"&foto="+foto;
    hr.open("POST", url, true);
    // Set content type header information for sending url encoded variables in the request
    hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    // Access the onreadystatechange event for the XMLHttpRequest object
    hr.onreadystatechange = function() {
        if(hr.readyState == 4 && hr.status == 200) {
             var
return_data = hr.responseText;
            document.getElementById("output").innerHTML = return_data;
            
            }
    }

    // Send the data to PHP now... and wait for response to update the status div
    hr.send(vars); // Actually execute the request
    document.getElementById("output").innerHTML = "processing...";
}


?>

Edit:
Titel aangepast om verwarring tussen JAVA en JavaScript te voorkomen.
Beiden zijn overigens totaal verschillende programmeertalen...


Toevoeging op 11/07/2013 08:45:02:

je heb gelijk Aar
Gewijzigd op 11/07/2013 08:42:26 door - Ariën -
 
PHP hulp

PHP hulp

21/11/2024 22:32:39
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

11/07/2013 09:23:08
Quote Anchor link
Je kan met AJAX geen bestanden uploaden.
Je kan dit wel simuleren, door met een (verborgen) iframe te werken.
 
Stefan H

stefan H

11/07/2013 11:13:25
Quote Anchor link
Oke bedankt voor je reactie

Dan houd het op
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

11/07/2013 11:32:06
Quote Anchor link
Je gebruikt geen jQuery? Dan zijn er nl. wel plugins voor.
Het is met javascript ook niet moeilijk, je verstuurt het formulier naar het iframe, en met javascript kun je vanuit dat iframe de elementen in het bovenliggende document manipuleren.
Er zijn best wel wat voorbeeldjes te vinden, bv. hier
 
Kris Peeters

Kris Peeters

11/07/2013 12:45:12
Quote Anchor link
Wel, tegenwoordig kan het wel. De webbrowsers hebben wat nieuwe functionaliteit toegevoegd: "formdata"
Het is wel wat zoeken om het goed te krijgen.

Vanuit dit artikel: http://blog.new-bamboo.co.uk/2012/01/10/ridiculously-simple-ajax-uploads-with-formdata

heb ik dit samengesteld (ingekort; zodat je niet te veel afgeleid wordt)

TO DO: maak een mapje "uploads"; daar komen de uploads. (of pas lijn 11 van upload.php aan...)

index.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<form id="the-form" method="post" action="upload.php" enctype="multipart/form-data" onsubmit="return form_submit(this)">
  <input name="username" placeholder="username"><br>
  <input id="the-file" name="file" type="file"><br>
  <input type="submit" value="Upload" />
</form>
<div id="message"></div>
<script>
// The Javascript
function form_submit() {
  var formData = new FormData(form);
  
  var form = document.getElementById('the-form');
  var file = document.getElementById('the-file').files[0];
  formData.append('file', file);

  var xhr = new XMLHttpRequest();
  // Add any event handlers here...
  xhr.open('POST', form.getAttribute('action'), true);
  xhr.addEventListener('readystatechange',  onreadystatechangeHandler, false);
  xhr.send(formData);

  return false; // To avoid actual submission of the form
}
// Handle the response from the server
function onreadystatechangeHandler(evt) {
  var status = null;
  try {
    status = evt.target.status;
  }
  catch(e) {
    return;
  }
  if (status == '200' && evt.target.responseText) {
    document.getElementById('message').innerHTML =  evt.target.responseText ;  // bericht van de server
  }
}
</script>


upload.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
/**
* @file Ajax upload
* alles wat je print (echo) wordt als bericht naar Ajax teruggestuurd
*/

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
  $file_name = $_FILES["file"]["name"];
  // extensie zoeken
  list( $dirname, $basename, $extension, $filename ) = array_values( pathinfo($_FILES["file"]['name']) );
  if (in_array(strtolower($extension), array('jpg', 'jpeg', 'png', 'gif'))) {  // controleren dat het een toegelaten extensie is
    $destination = 'uploads/' . $basename;
    if(move_uploaded_file ($_FILES["file"]["tmp_name"], $destination)) {
      echo 'File uploaded: ' . $_FILES["file"]["name"];
    }

    else {
      echo -1;
    }
  }
}

?>
Gewijzigd op 11/07/2013 12:58:04 door Kris Peeters
 
Stefan H

stefan H

11/07/2013 13:13:00
Quote Anchor link
Bedankt voor de tips ik ga ermee aan de slag
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

11/07/2013 17:30:35
Quote Anchor link
@Kris,

Als ik op mozzila.org kijk zie ik dat dit door IE versies lager dan 10 niet ondersteund wordt!. Ik weet niet of die info klopt, maar lijkt me toch wel belangrijk.
Gewijzigd op 11/07/2013 17:31:50 door Ger van Steenderen
 
Kris Peeters

Kris Peeters

11/07/2013 17:55:56
Quote Anchor link
Ja, dat lijkt me inderdaad vrij waarschijnlijk.
Om goed te zijn, zou men nog extra beveiliging moeten toevoegen.
Een aantal try/catch'en of zo.

Ik zou het zelf nog eens deftig moeten bekijken
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

11/07/2013 19:47:44
Quote Anchor link
Of deftig afkijken ;-)
Even uit nieuwsgierigheid, gebruik jij nog veel plain javascript?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.