Hernoemen bij uploaden if file exists
Ik heb een uploadscript (niet helemaal zelf gemaakt zoals op zal vallen) dat alles netjes verwerkt. Heb er veel dingen zelf in toegevoegd maar krijg het niet voor elkaar om dat als een bestand al bestaat het te uploaden bestand te hernoemen met bijv een rand() ervoor.
Dit is het basisscript:
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<?
if(isset($_FILES))
{
// initialize error var for processing
$error = array();
// acceptable files
// if array is blank then all file types will be accepted
$filetypes = array(
'jpg' => 'image/jpeg',
'jpe' => 'image/jpeg',
'jpeg' => 'image/jpeg',
'pjpg' => 'image/pjpeg',
'pjpe' => 'image/pjpeg',
'pjpeg' => 'image/pjpeg',
);
// function to check for accpetable file type
function okFileType($type)
{
// if filetypes array is empty then let everything through
if(count($GLOBALS['filetypes']) < 1)
{
return true;
}
// if no match is made to a valid file types array then kick it back
elseif(!in_array($type,$GLOBALS['filetypes']))
{
$GLOBALS['error'][] = $type.' is not an acceptable file type. '.
$type.' has been ignored.';
die('<font color="red">De bestanden konden niet geupload worden. Er zat een \''.$type.'\' bestand bij,
dit type bestand kan niet geupload worden. Alleen .jpg bestanden kunnen geupload worden.
</font>');
return false;
}
// else - let the file through
else
{
return true;
}
}
// function to check and move file
function processFile($file)
{
$upload_file = $GLOBALS['destination'].$file['name'];
if(!move_uploaded_file($file['tmp_name'], $upload_file))
{
// failed to move file
echo '<font color="red">Het uploaden van het bestand <b>'.$file['name'].'</b> is mislukt. Probeer het opnieuw.</font>
<br />';
return false;
}
else
{
// upload OK - change file permissions
return true;
}
}
// check to make sure files were uploaded
$no_files = 0;
$uploaded = array();
foreach($_FILES as $file)
{
switch($file['error'])
{
case 0:
// file found
if($file['name'] != NULL && okFileType($file['type']) != false)
{
// process the file
if(processFile($file) == true)
$uploaded = $file['name'];
}
break;
case (1|2):
// upload too large
echo '<font color="red">Het volgende bestand <b>'.$file['name'].' is te groot en kan daarom niet geupload worden.<br /></font>';
break;
case 4:
// no file uploaded
echo '<font color="red">Het bestand kon niet geupload worden, waarschijnlijk was het te groot</font>';
break;
case (6|7):
// no temp folder or failed write - server config errors
die('<font color="red">Er is een onbekend probleem opgetreden. Neem contact op met
<br /></font>');
break;
}
}
}
?>
if(isset($_FILES))
{
// initialize error var for processing
$error = array();
// acceptable files
// if array is blank then all file types will be accepted
$filetypes = array(
'jpg' => 'image/jpeg',
'jpe' => 'image/jpeg',
'jpeg' => 'image/jpeg',
'pjpg' => 'image/pjpeg',
'pjpe' => 'image/pjpeg',
'pjpeg' => 'image/pjpeg',
);
// function to check for accpetable file type
function okFileType($type)
{
// if filetypes array is empty then let everything through
if(count($GLOBALS['filetypes']) < 1)
{
return true;
}
// if no match is made to a valid file types array then kick it back
elseif(!in_array($type,$GLOBALS['filetypes']))
{
$GLOBALS['error'][] = $type.' is not an acceptable file type. '.
$type.' has been ignored.';
die('<font color="red">De bestanden konden niet geupload worden. Er zat een \''.$type.'\' bestand bij,
dit type bestand kan niet geupload worden. Alleen .jpg bestanden kunnen geupload worden.
</font>');
return false;
}
// else - let the file through
else
{
return true;
}
}
// function to check and move file
function processFile($file)
{
$upload_file = $GLOBALS['destination'].$file['name'];
if(!move_uploaded_file($file['tmp_name'], $upload_file))
{
// failed to move file
echo '<font color="red">Het uploaden van het bestand <b>'.$file['name'].'</b> is mislukt. Probeer het opnieuw.</font>
<br />';
return false;
}
else
{
// upload OK - change file permissions
return true;
}
}
// check to make sure files were uploaded
$no_files = 0;
$uploaded = array();
foreach($_FILES as $file)
{
switch($file['error'])
{
case 0:
// file found
if($file['name'] != NULL && okFileType($file['type']) != false)
{
// process the file
if(processFile($file) == true)
$uploaded = $file['name'];
}
break;
case (1|2):
// upload too large
echo '<font color="red">Het volgende bestand <b>'.$file['name'].' is te groot en kan daarom niet geupload worden.<br /></font>';
break;
case 4:
// no file uploaded
echo '<font color="red">Het bestand kon niet geupload worden, waarschijnlijk was het te groot</font>';
break;
case (6|7):
// no temp folder or failed write - server config errors
die('<font color="red">Er is een onbekend probleem opgetreden. Neem contact op met
<br /></font>');
break;
}
}
}
?>
Wie kan me helpen? Ik zie de functies zelf wel in scripts staan maar krijg het hier niet in gezet...
if (file_exists($file['tmp_name'], $upload_file))
{
$code = rand();
$ext = '.jpg';
$file['tmp_name'] = $code.$ext;
}
Dat heb ik erin proberen te verwerken maar dat werkte niet!
Gewijzigd op 01/01/1970 01:00:00 door Shakes
$code = rand();
rename($destination.$uploaded, $destination.$code.$uploaded);
Lui maar kleine kans dat files nu dezelfde naam hebben
Hah, thanks maar dat had ik dus al gedaan (zie laatste reactie). Vind het alleen niet de netste oplossing. Wel effectief...
Code (php)
1
2
3
4
2
3
4
$upoad = $_FILES['user_file']['name']
$random = mt_rand (0,9999999);
$_FILES['user_file']['name'] = $random . $upload;
$bestands_naam = $_FILES['user_file']['name'];
$random = mt_rand (0,9999999);
$_FILES['user_file']['name'] = $random . $upload;
$bestands_naam = $_FILES['user_file']['name'];
Edit:
voorbeeldcode aangepast
voorbeeldcode aangepast
Gewijzigd op 01/01/1970 01:00:00 door Simon Blok