[英]Blueimp jQuery-File-Upload with codeigniter upload and rename and resize the images
[英]“Blueimp jQuery File Upload” rename files
我正在使用Blueimp jQuery文件上傳工具。 我想在上傳文件時完全重命名它們。 由於照片是根據用戶ID添加到唯一目錄中,因此我真的只想添加名稱為001.jpg,002.jpg,003.jpg等的照片。如何做到這一點(可以通過修改UploadHandler來實現)。 php或index.php?
在index.php中(下面的代碼當前會更改上傳目錄):
$userID = 'user005'; //hardcoded in this example
$options = array('upload_dir'=>'files/'.$userID.'/', 'upload_url'=>'files/'.$userID.'/');
$upload_handler = new UploadHandler($options);
舊帖子,但由於今天我正在搜索相同的內容,因此我發布了我的解決方案,希望它能對某人有所幫助。
我以這種方式編輯UploadHandler.php文件:
//custom function which generates a unique filename based on current time
protected function generate_unique_filename($filename = "")
{
$extension = "";
if ( $filename != "" )
{
$extension = pathinfo($filename , PATHINFO_EXTENSION);
if ( $extension != "" )
{
$extension = "." . $extension;
}
}
return md5(date('Y-m-d H:i:s:u')) . $extension;
}
protected function handle_file_upload($uploaded_file, $name, $size, $type, $error,
$index = null, $content_range = null) {
$file = new \stdClass();
//MYEDIT to generate unique filename
$file->name = $this->generate_unique_filename($name);
//ORIGINAL LINE: $file->name = $this->get_file_name($uploaded_file, $name, $size, $type, $error, $index, $content_range);
//...
}
對於那些僅通過$options
給出name
的人:
替換(1056行?)
$file->name = $this->get_file_name($uploaded_file, $name, $size, $type, $error, $index, $content_range);
與
$extension = pathinfo($name , PATHINFO_EXTENSION);
if ( $extension != "" ){
$extension = "." . $extension;
}
$file->name = (isset($this->options['filename']) && isset($extension) )
? $this->options['filename'] . $extension
: $this->get_file_name($uploaded_file, $name, $size, $type, $error, $index, $content_range);
然后在這樣的選項中輸入名稱:
$upload_handler = new UploadHandler(array(['filename' => 'whatever' ]));
為什么不嘗試uniqid()
生成唯一名稱?
protected function generate_unique_filename( $filename = "" )
{
$extension = "";
if ( $filename != "" )
{
$extension = pathinfo( $filename, PATHINFO_EXTENSION );
if ( $extension != "" )
{
$extension = "." . $extension;
}
}
return md5( uniqid() ) . $extension;
//or simply return uniqid() . $extension;
}
感謝那 !
但是我有一個問題,我想用一個字段標題來重命名,我嘗試使用它:
protected function handle_form_data($file, $index) {
$file->title = @$_REQUEST['title'][$index];
}
protected function generate_unique_filename($filename = "") {
$extension = "";
if ( $filename != "" )
{
$extension = pathinfo( $filename, PATHINFO_EXTENSION );
if ( $extension != "" ) {
$extension = "." . $extension;
}
}
return $file->title . $extension;
}
但是我每次都會收到JSON錯誤...(@ $ _ REQUEST ['title'] [$ index];運行良好,我將其保存在數據庫中)
在UploadHandler
類中編輯$name
變量以獲取唯一的文件名。 看代碼
protected function get_file_name($file_path, $name, $size, $type, $error,$index,$content_range)
對於多個文件下載,我從SananTheBest添加一些行,如下所示。 實際上,原因文件無法上傳,因為即使使用日期,文件名稱也相同,如他先前的文章中所述。 (謝謝)
protected function generate_unique_filename($filename = "")
{
$extension = "";
if ( $filename != "" )
{
$extension = pathinfo($filename , PATHINFO_EXTENSION);
if ( $extension != "" )
{
$extension = "." . $extension;
}
}
//$filenamegen = date('ymdHis').generateRandomString();
$characters = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
$charactersLength = strlen($characters);
$randomString = "";
for ($i = 0; $i < 5 ; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
//$filenamerandom=$filename.".jpg";
//return md5(date('Y-m-d H:i:s:u')). $extension;
return date('ymdHis').$randomString . $extension ;
}
get_file_name
方法是實際命名的地方。 為了避免過多的變通辦法,只需將釘子釘在頭上,請按如下所示進行編輯:
protected function get_file_name($file_path, $name, $size, $type, $error,
$index, $content_range) {
$name = $this->trim_file_name($file_path, $name, $size, $type, $error,
$index, $content_range);
//don't return this right away; parse it to a variable
$unique_file_name = $this->get_unique_filename(
$file_path,
$this->fix_file_extension($file_path, $name, $size, $type, $error,
$index, $content_range),
$size,
$type,
$error,
$index,
$content_range
);
//generate your custom name here
$custom_name = uniqid('profilepic');
//extract file extension
$file_extension = pathinfo($unique_file_name, PATHINFO_EXTENSION);
return $custom_name.'.'.$file_extension;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.