簡體   English   中英

PHP如何重命名上傳的文件?

[英]PHP how to rename uploaded file?

我想重命名文件並將其上傳到服務器以及數據庫中。 我有一個代碼:

$file = $_FILES['file'];
list(,$type) = explode('/', $file['type']);
move_uploaded_file($file['tmp_name'], 'images/'.time().'.'.$type);
$a = time();
$b = ($a.'.'.$type);

它正在工作,但是我不確定它是如何工作的。 如何將這個'images/'.time().'.'.$type 'images/'myname.time().'.'.$type)為我想要的名稱,例如: 'images/'myname.time().'.'.$type)所有這些點和引號殺死了我!

如果這些點殺死了您,請將其更改為加號(+)。 它們有時也會出現在我身上,因為在嘗試訪問對象/類的成員或字符串追加操作時,我很難理解這是否是點符號。 在這里,您的第三行被重新想象:

$newName = 'aDifferentFileName';
$finalFilePath = 'images/' + $newName + time() + '.' + $type;
move_uploaded_file( $file['tmp_name'], $finalFilePath );

通常,為了便於閱讀,我會盡量避免使用句號進行連接。

是的你可以

http://php.net/manual/zh/function.move-uploaded-file.php

$new_name = 'yournewname'.time().'.'.$type;
move_uploaded_file($file['tmp_name'], 'images/'.$new_name);

然后使用$ new_name進行數據庫查詢。

move_uploaded_file()具有兩個參數-舊名稱和新名稱。 第二個是新名稱,因此您可以指定所需的任何內容。

點是PHP中的串聯運算符。

'images /'。time()。'。'。$ type);

意思是“取靜態字符串'images /',將time()的返回值放在末尾,然后是句點,然后是變量$ type的內容。

例如,如果time()返回“ 1”,而$ type包含“ example”,則結果將為“ images / 1.example”

這將有效地將您上傳的文件重命名為目錄images /

點是PHP字符串串聯運算符。 請參閱此處: http : //www.phpf1.com/tutorial/php-string-concatenation.html ,以快速了解其工作原理。

如果讓您感到更舒適,則可以使用sprintf將名稱生成轉換為字符串格式化操作: http : //php.net/manual/en/function.sprintf.php

基本上,文件的新名稱將是move_uploaded_file的第二個參數,因此您可以在其中放置任何內容。

move_uploaded_file($file['tmp_name'], 'images/'.$yourName.time().'.'.$type);

如果要在名稱和時間之間使用分隔符:

move_uploaded_file($file['tmp_name'], 'images/'.$yourName.'-'.time().'.'.$type);

點是連接操作(將字符串連接在一起)。

移動上載文件如下所示: move_uploaded_file ( string $filename , string $destination )

$file name是上載到臨時目錄的臨時名稱, $string是您將其移至的目標路徑。

就您而言,您可以執行以下操作:

$myname = 'thisismyname';
$filename = 'images/' . $myname . time() . '.' . $type;
move_uploaded_file($file['tmp_name'], $filename); //Move the file 
//Save $filename to the database here

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM