Prevent uploads from overwriting each other. props neodude. fixes #6294
git-svn-id: http://svn.automattic.com/wordpress/trunk@7440 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
44c9c17fe4
commit
c5e0b789f6
|
@ -1122,27 +1122,31 @@ function wp_unique_filename( $dir, $filename, $unique_filename_callback = NULL )
|
||||||
$info = pathinfo($filename);
|
$info = pathinfo($filename);
|
||||||
$ext = $info['extension'];
|
$ext = $info['extension'];
|
||||||
$name = basename($filename, ".{$ext}");
|
$name = basename($filename, ".{$ext}");
|
||||||
|
|
||||||
|
// edge case: if file is named '.ext', treat as an empty name
|
||||||
|
if( $name === ".$ext" )
|
||||||
|
$name = '';
|
||||||
|
|
||||||
// Increment the file number until we have a unique file to save in $dir. Use $override['unique_filename_callback'] if supplied.
|
// Increment the file number until we have a unique file to save in $dir. Use $override['unique_filename_callback'] if supplied.
|
||||||
if ( $unique_filename_callback && function_exists( $unique_filename_callback ) ) {
|
if ( $unique_filename_callback && function_exists( $unique_filename_callback ) ) {
|
||||||
$filename = $unique_filename_callback( $dir, $name );
|
$filename = $unique_filename_callback( $dir, $name );
|
||||||
} else {
|
} else {
|
||||||
$number = '';
|
$number = '';
|
||||||
$filename = str_replace( '#', '_', $name );
|
|
||||||
$filename = str_replace( array( '\\', "'" ), '', $filename );
|
if ( empty( $ext ) )
|
||||||
if ( empty( $ext) )
|
|
||||||
$ext = '';
|
$ext = '';
|
||||||
else
|
else
|
||||||
$ext = strtolower( ".$ext" );
|
$ext = strtolower( ".$ext" );
|
||||||
$filename = $filename . $ext;
|
|
||||||
|
$filename = str_replace( $ext, '', $filename );
|
||||||
|
$filename = sanitize_title_with_dashes( $filename ) . $ext;
|
||||||
|
|
||||||
while ( file_exists( $dir . "/$filename" ) ) {
|
while ( file_exists( $dir . "/$filename" ) ) {
|
||||||
if ( '' == "$number$ext" )
|
if ( '' == "$number$ext" )
|
||||||
$filename = $filename . ++$number . $ext;
|
$filename = $filename . ++$number . $ext;
|
||||||
else
|
else
|
||||||
$filename = str_replace( "$number$ext", ++$number . $ext, $filename );
|
$filename = str_replace( "$number$ext", ++$number . $ext, $filename );
|
||||||
}
|
}
|
||||||
$filename = str_replace( $ext, '', $filename );
|
|
||||||
$filename = sanitize_title_with_dashes( $filename ) . $ext;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $filename;
|
return $filename;
|
||||||
|
|
Loading…
Reference in New Issue