datei bei upload umbenennen

marcc

marcc

Tripel-As
Hallo. Ich hab hier ein fertiges upload script.
wenn aber eine datei upgeloaded wird die schon existiert. wird die überschrieben.. also wärs gut wenn sie beim upload umbenannt wird.

file.txt -> timestamp-file.txt

nur wie geht das?

PHP:
<?php
/*
Plugin Name: widget upload
Plugin URI: http://jessai.fr.nf/archives/9
Description: widget upload.
Version: 1.5.1
Author: jessai
Author URI: http://jessai.fr.nf
*/
function widget_upload_init() {
	
	function widget_upload( $args ) {
		$user = wp_get_current_user();
		if (($user->user_login) &&(!$user->wp_user_level)) {
			$niveau_user = 0;
		}
		else {
			$niveau_user = $user->wp_user_level;
		}
		if ($user->ID==0)
			$niveau_user = -1;			
		extract($args);    
		$options = get_option('widget_upload_options');
		if ($niveau_user < $options['upload_autorise']) {
			return;
		}
			$ext_autorises = explode(",",$options['upload_ext']);
			echo $before_widget;
		        echo $before_title . $options['upload_title']. $after_title;
		        //echo 'user :';
		        //print_r($user);
				$user_identity = $user->display_name;
				
				echo '<div>what does work: </div><div>';
				$nbre_ext_autorises = count($ext_autorises);
				$i=0;
				echo "<div class='postinfo'>";
				foreach ($ext_autorises as $ext_autorise)
				{
					$i++;
					echo $ext_autorise;
					if ($i < $nbre_ext_autorises) echo ' - ';
				}
				echo "</div>";
		?>
				</div><br />
		        <ul>
		        
		             <form name="form_upload" method="post" enctype="multipart/form-data">
		             	<input type="file" name="fileupload" id="upfile_0" size="10" tabindex="1" />
						<input align="center" type="submit" name="envoyer" value="submit" />
					</form>
		        </ul>
		<?php
			if (is_uploaded_file($_FILES['fileupload']['tmp_name']))
			{
				$ext_fichier = explode(".",$_FILES['fileupload']['name']);
				$ext_autorise_ok = false ;
				
				foreach ($ext_autorises as $ext_autorise)
				{
					if ($ext_autorise == end($ext_fichier))
					{
						$ext_autorise_ok = true ;
						break ;
					}
				}
				if ($ext_autorise_ok)
				{
					$source = $_FILES[fileupload][tmp_name];
		 			$dest = ABSPATH.'/'.$options['upload_chemin'].'/'.$_FILES[fileupload][name];
					if ($source)
					{
						copy($source,$dest);
					}
					echo "<font color='#008000'>file uploaded</font>";
					unlink($source);
				}
				else
				{
					echo "<font color='#FF0000'>DENIED.<br>wrong filetype? Use ONLY the one listed above!</font>";
				}
							
			}
			echo $after_widget;	
		

	}
	
	
	function widget_upload_control() {
	        $newoptions = $options = get_option('widget_upload_options');
	        if ( $_POST['submit_essai'] ) {
		       $newoptions['upload_title'] = $_POST['upload_title'];
		       $newoptions['upload_autorise'] = $_POST['upload_autorise'];
		       $newoptions['upload_chemin'] = $_POST['upload_chemin'];
		       $newoptions['upload_ext'] = $_POST['upload_ext'];
		       print_r($newoptions);
	        }
	        if ( $options != $newoptions ) {
	            $options = $newoptions;
	            update_option('widget_upload_options', $options);
	        }
	        
	?>
	    <div><label for="upload_title">Titre     : 
	          <div><input name="upload_title" id="upload_title" value="<?php echo $options['upload_title']; ?>" /></div>
	    </label></div>
	    <div style="margin-top:10px; margin-bottom:5px; " ><label for="upload_autorise"> Qui peut uploader :
	    		<div><select name="upload_autorise" id="upload_autorise">
	    				<option value="-1" <?php if ($options['upload_autorise'] == -1) echo 'selected="selected"'; ?> >Non inscrit</option>
			<?php
			$nom_role = role();
			foreach( $nom_role as $role => $details ) {
				for ($i=0; $i<=10; $i++){
					$niveau="level_".$i;
					if ($details['capabilities'][$niveau]) {
						$role_value = $i;
					}
				}
	          	$name = translate_with_context($details['name']);
	          	if ($role_value == $options['upload_autorise']) {
		          	echo '<option value="'.$role_value.'" selected="selected" >'.$name.'</option>';
	          	}
	          	else {
					echo '<option value="'.$role_value.'" >'.$name.'</option><br />';
				}
			}
			?></select></div>

	    </label></div>
	    
	    <div><label for="upload_chemin">chemin : 
	           <div><input name="upload_chemin" id="upload_chemin" value="<?php echo $options['upload_chemin']; ?>" /></div>
	    </label></div>
	    <div><label for="upload_ext"><?php echo utf8_encode('extensions autoris�es (s�parer par une virgule) : '); ?> 
	           <div><input name="upload_ext" id="upload_ext" value="<?php echo $options['upload_ext']; ?>" /></div>
	    </label></div>
	    <input id="submit_essai" name="submit_essai" type="hidden" value="1" />
	<?php
	}
  
  register_sidebar_widget( 'Upload', 'widget_upload');
  register_widget_control('Upload', 'widget_upload_control', 200, 500);
}

function role(){
	 global $wp_roles;
	 
     $all_roles = $wp_roles->roles;
     $editable_roles = apply_filters('editable_roles', $all_roles);
     return $editable_roles;
}
function affiche_succes($succes){
	echo utf8_encode($succes);
}

	add_action('widgets_init', 'widget_upload_init');
?>
 
hmm..
dann timestamp einbauen und
statt "copy($source,$dest);" dein script.
PHP:
                if ($ext_autorise_ok)
                {
                    $source = $_FILES[fileupload][tmp_name];
                    $timestamp = time();
                    $dest = ABSPATH.'/'.$options['upload_chemin'].'/'.$timestamp.'-'.$_FILES[fileupload][name];
                    if ($source)
                    {
       //                 copy($source,$dest);
                          move_uploaded_file($source, $dest);
                    }
                    echo "<font color='#008000'>file uploaded</font>";
                    unlink($source);
                }
                else
                {
                    echo "<font color='#FF0000'>DENIED.<br>wrong filetype? Use ONLY the one listed above!</font>";
                }

gibt die fehlermeldung
Warning: unlink(/tmp/phpu4T8LV) [function.unlink]: No such file or directory in /home/florian/public_www/wordpress/wp-content/plugins/widget-upload/widget_upload.php on line 77
 
Zuletzt bearbeitet:
Hi,

das Warning kommt weil du ein move_uploaded_file gemacht hast, damit gibt es die Datei auf die in $source verwiesen wird nicht mehr, deshalb wirft unlink die Fehlermeldung.

Wieso er den Timestamp nicht anzieht seh ich auf den ersten Blick jetzt auch nicht.

mfg
HeadCrash
 
das mit dem timestamp hab ich noch hinbekommen. war nur ein tippfehler..

dann hau ich
Code:
unlink($source);
einfach raus, oder is des wichtig.
taucht danach auf jedenfall nicht mehr auf.
 
move_uploaded_file erledigt für Dich das löschen.
Das unlink kannst Du also einfach weglassen.
 

Ähnliche Themen

NagiosGrapher 1.7.1 funktioniert nicht

dovecot und postfix Konfiguration Problem

Debian squeeze, Webmin, Samba Freigaben

Variablen in Session speichern

Last mit etc/passwd anzeigen lassen

Zurück
Oben