Hernoemen bij uploaden if file exists

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Shakes

Shakes

13/10/2006 20:24:00
Quote Anchor link
Hallo,

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)
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
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;
                        }
                }
                
        
        
       }

?>


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
 
PHP hulp

PHP hulp

22/12/2024 19:49:01
 
Shakes

Shakes

13/10/2006 22:23:00
Quote Anchor link
Ok, nog geen reacties gehad maar ik heb ondertussen voor een (te) makkelijke en luie oplossing gekozen... alles hernoemen (tis vrijdag en ik wil nog weg :p)

$code = rand();
rename($destination.$uploaded, $destination.$code.$uploaded);

Lui maar kleine kans dat files nu dezelfde naam hebben
 
PHP Newbie

PHP Newbie

14/10/2006 00:07:00
Quote Anchor link
kijk even naar de functie rename()

Daarmee kun je wel realiseren wat je wilt.
 
Shakes

Shakes

14/10/2006 13:23:00
Quote Anchor link
Hah, thanks maar dat had ik dus al gedaan (zie laatste reactie). Vind het alleen niet de netste oplossing. Wel effectief...
 
Simon Blok

Simon Blok

14/10/2006 13:32:00
Quote Anchor link
met rename hernoem een al bestaand bestand, als je het te uploaden bestand wilt voorzien van een random code kun je het volgende gebruiken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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'];


Edit:

voorbeeldcode aangepast
Gewijzigd op 01/01/1970 01:00:00 door Simon Blok
 



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.