probleem met originele filenaam bij $_FILES

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Johan

Johan

03/01/2006 19:21:00
Quote Anchor link
Hallo,

Ik heb een probleempje met uploaden van files. Graag wil ik de originele filenaam in de database bewaren bijv. E:\fotos\feestje\Johan.jpg. De $_FILES['upload']['name'] geeft alleen johan.jpg terug. Hoe kan ik de filenaam achterhalen zoals die in de input box staat voor upload.

Johan
 
PHP hulp

PHP hulp

17/11/2024 08:45:52
 
Jan Koehoorn

Jan Koehoorn

03/01/2006 19:40:00
Quote Anchor link
Je hebt een input type file. Als je die een name geeft, stuurt je formulier de hele string mee.

<input type="file" name="fullname">

Na verzenden haal je hem op met $_POST['fullname']
 
Willem Jan Z

Willem Jan Z

03/01/2006 20:20:00
Quote Anchor link
Dat werkt niet, dacht het ook, maar ging eerst even testen. Dan krijg je hetzelfde effect als met $_FILES['files']['name'];
 
Jan Koehoorn

Jan Koehoorn

03/01/2006 21:39:00
Quote Anchor link
Hee, da's gek. Ik ga even kijken.
 
Jan Koehoorn

Jan Koehoorn

03/01/2006 22:01:00
Quote Anchor link
Ik heb er een oplossing voor gevonden. Hij werkt zo:

1) je maakt een hidden field
2) op onsubmit van het form kopieer je de value van de input type file naar het hidden field

Code:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript" src="microapi.js"></script>
<script type="text/javascript">
window.onload = init;
var _myForm, _fullname, _file;

function init () {
_myForm = new getObj ('myForm');
_fullname = new getObj ('fullname');
_file = new getObj ('file');

_myForm.obj.onsubmit = function () {return copyfullname ();};
}

function copyfullname () {
_fullname.obj.value = _file.obj.value;
return true;
}
</script>
</head>

<body>
<form action="test.php" method="post" id="myForm">
<input id="fullname" name="fullname" type="hidden">
<input id="file" name="file" type="file">
<input id="submit" name="submit" type="submit" value="submit">
</form>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
  if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    print_r ($_POST);
  }

?>

</body>
</html>
 
Johan

Johan

04/01/2006 07:11:00
Quote Anchor link
Jan,

Als ik bovenstaande script uitvoer dan krijg ik

Array ( [fullname] => [file] => Johan.jpg [submit] => submit )

de filename zou moeten zijn C:\Fotos\Johan.jpg

Toch wel lastig probleempje

Johan
 
Johan

Johan

04/01/2006 13:17:00
Quote Anchor link
Hallo,

Ik heb gevonden hoe je het wel kunt doen. Hieronder volgt het script

test.php

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if(!empty($_POST)) {
    print_r($_POST);
}

?>

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<script type="text/javascript">

function setfilename(x)
{
document.getElementById("fullname").value = document.getElementById(x).value;
}

</script>

</head>

<body>
<form action="test.php" method="post" id="myForm">
<input id="fullname" name="fullname" type="hidden">
<input id="file" name="file" id="fname" type="file" SIZE="70" onchange="setfilename(this.id)">
<input id="submit" name="submit" type="submit" value="submit">
</form>


</body>
</html>
 
Jan Koehoorn

Jan Koehoorn

04/01/2006 13:26:00
Quote Anchor link
Johan:
Jan,

Als ik bovenstaande script uitvoer dan krijg ik

Array ( [fullname] => [file] => Johan.jpg [submit] => submit )

de filename zou moeten zijn C:FotosJohan.jpg

Toch wel lastig probleempje

Johan


Dat komt omdat ik een javascript include die jij niet hebt: microapi.js

En de post daarna gebruik je document.getElementByID en die zal het meestal wel doen.
 



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.