Bestands naam verandere tijdens upload
ik probeer de naam van bestanden te veranderen tijdens het uploaden.
in sommige namen zitten namelijk spaties en die moeten er tussen uit,
ik heb alleen geen idee hoe ik dat zou moeten doen.
een klein beetje hulp is al heel erg op prijs gesteld :-)
spaties veranderen in underscores met str_replace?
maar hoe pas ik dit dan toe op een bestandsnaam?
Bovenstaande is alleen als voorbeeld natuurlijk. Ik weet niet hoe je vars heten.
het veranderen snap ik nog maar hoe pas ik het dan toe?
In het tweede gedeelte van het move_uploaded_file() als ik me niet vergis. File upload is al een tijdje geleden.
weet iemand hoe ik dit goed aanpak
ik kan heb het 'naslag' werk door gekeken maar er zit nergens een functie in wat doet wat ik nodig heb?
move_uploaded_file()
gewoon even kijken naar de functie Gewijzigd op 31/05/2011 13:20:18 door Vincent Huisman
Wat heb je nu al geprobeerd? Je hebt namelijk al meer dan genoeg info om het simpel op te lossen.
- De gebruiker upload een image.
- PHP haalt door middel van str_replace de spaties eruit en maakt er een nieuwe string van.
- De nieuwe string is de bestandsnaam en zo wordt hij dus benoemd.
Een voorbeeld hoe je het zal kunnen doen (zonder de juiste controles uiteraard):
Code (php)
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
39
40
41
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
39
40
41
<?php
function file_safe_name($filename = '') {
if(trim($filename) != '') {
$filename = basename($filename);
// FILTER EXTENSION
preg_match('/\.([^\.]*$)/', $filename, $extension);
if (is_array($extension) && count($extension) > 0) {
$filename_ext = '.' . strtolower($extension[1]);
$filename_body = substr($filename, 0, ((strlen($filename) - strlen($filename_ext)))-1);
} else {
$filename_ext = '';
$filename_body = $filename;
}
// REMOVE SPECIAL CHARACTERS
$filename_body = str_replace(array(' ', '-'), array('_','_'), $filename_body);
$filename_body = preg_replace('/[^A-Za-z0-9_]/', '', $filename_body) ;
return $filename_body.$filename_ext;
}
return false;
}
$file_safe_name = file_safe_name($_FILES['bestand']['name']);
$path = $_SERVER['DOCUMENT_ROOT'].'/upload/';
if(move_uploaded_file($_FILES['bestand']['tmp_name'],$path.$file_safe_name)) {
echo 'Gelukt!';
} else {
echo 'Er is iets mis gegaan';
}
?>
function file_safe_name($filename = '') {
if(trim($filename) != '') {
$filename = basename($filename);
// FILTER EXTENSION
preg_match('/\.([^\.]*$)/', $filename, $extension);
if (is_array($extension) && count($extension) > 0) {
$filename_ext = '.' . strtolower($extension[1]);
$filename_body = substr($filename, 0, ((strlen($filename) - strlen($filename_ext)))-1);
} else {
$filename_ext = '';
$filename_body = $filename;
}
// REMOVE SPECIAL CHARACTERS
$filename_body = str_replace(array(' ', '-'), array('_','_'), $filename_body);
$filename_body = preg_replace('/[^A-Za-z0-9_]/', '', $filename_body) ;
return $filename_body.$filename_ext;
}
return false;
}
$file_safe_name = file_safe_name($_FILES['bestand']['name']);
$path = $_SERVER['DOCUMENT_ROOT'].'/upload/';
if(move_uploaded_file($_FILES['bestand']['tmp_name'],$path.$file_safe_name)) {
echo 'Gelukt!';
} else {
echo 'Er is iets mis gegaan';
}
?>
Gewijzigd op 31/05/2011 14:55:57 door Arjan -
1000 maal thanks
Warning: move_uploaded_file([plaatje.jpg]) [function.move-uploaded-file]: failed to open stream: No such file or directory in [bestandsnaam.php] on line 375
plaatje.jpg bestaat niet
had een absolute path gebruikt en had daarbij $_SERVER['DOCUMENT_ROOT'] niet weg gehaald.
het gaat nu wel goed, op het gedeelte na dat hij de laatste charactar weg haalt bij de naam van het bestand dus inplaats van plaatje.jpg maakt hij er plaatj.jpg van.
Toevoeging op 02/06/2011 14:34:31:
sorry heb dit ook al gefixed, Heeel erg bedankt voor al jullie hulp.
hier onder is de code voor de mensen die toch de oplossing wouden weten
Code (php)
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
39
40
41
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
39
40
41
<?php
function file_safe_name($filename = '') {
if(trim($filename) != '') {
$filename = basename($filename);
// FILTER EXTENSION
preg_match('/\.([^\.]*$)/', $filename, $extension);
if (is_array($extension) && count($extension) > 0) {
$filename_ext = '.' . strtolower($extension[1]);
$filename_body = substr($filename, 0, (strlen($filename) - strlen($filename_ext)));
} else {
$filename_ext = '';
$filename_body = $filename;
}
// REMOVE SPECIAL CHARACTERS
$filename_body = str_replace(array(' ', '-'), array('_','_'), $filename_body);
$filename_body = preg_replace('/[^A-Za-z0-9_]/', '', $filename_body) ;
return $filename_body.$filename_ext;
}
return false;
}
$file_safe_name = file_safe_name($_FILES['bestand']['name']);
$path = $_SERVER['DOCUMENT_ROOT'].'/upload/';
if(move_uploaded_file($_FILES['bestand']['tmp_name'],$path.$file_safe_name)) {
echo 'Gelukt!';
} else {
echo 'Er is iets mis gegaan';
}
?>
function file_safe_name($filename = '') {
if(trim($filename) != '') {
$filename = basename($filename);
// FILTER EXTENSION
preg_match('/\.([^\.]*$)/', $filename, $extension);
if (is_array($extension) && count($extension) > 0) {
$filename_ext = '.' . strtolower($extension[1]);
$filename_body = substr($filename, 0, (strlen($filename) - strlen($filename_ext)));
} else {
$filename_ext = '';
$filename_body = $filename;
}
// REMOVE SPECIAL CHARACTERS
$filename_body = str_replace(array(' ', '-'), array('_','_'), $filename_body);
$filename_body = preg_replace('/[^A-Za-z0-9_]/', '', $filename_body) ;
return $filename_body.$filename_ext;
}
return false;
}
$file_safe_name = file_safe_name($_FILES['bestand']['name']);
$path = $_SERVER['DOCUMENT_ROOT'].'/upload/';
if(move_uploaded_file($_FILES['bestand']['tmp_name'],$path.$file_safe_name)) {
echo 'Gelukt!';
} else {
echo 'Er is iets mis gegaan';
}
?>