导入文件时输入名称
Putting name while importing a file
我想为要导入的文件指定一个自定义名称。所以在导入页面中我有两个文本字段 <input type='text' name='f[]' value='http://'>|<input type='text' name='n[]'>
。
当我只在文本区域中放置文件的 url 而没有放置任何名称时,文件被上传并且文件采用 url 的基本名称。但我想在上传文件时给它一个自定义名称。因此,当我将文件的 url 和我自己的自定义名称放在两个文本字段中时,会出现一些不同的名称,例如 "file_0.dat"。我尝试使用 $_POST[n] 获取名称,但没有成功。我正在共享导入操作脚本的一部分。请在这方面帮助我。
$i=0;
if(trim($_POST['n'][$i]) == '')
$_name = preg_match("~(.*)\.(\w)~i",basename($f)) ? basename($f) : "file_$i.dat";
else
$_name = preg_match("~(.*)\.(\w)~i",basename($_POST['n'][$i])) ? basename($_POST['n'][$i]) : "file_$i.dat";
如果您询问如何只更改文件的名称,您可以在文件上传后使用 PHP rename
函数来完成。
rename(basename($f), "/path_to_file/my_file.txt");
如果您问为什么您的文件名称为 file_0.dat
,那是因为基本名称与您提供的正则表达式不匹配。
试试这个正则表达式。
$filename = 'abc.zip';
$name = preg_match('/^(.)*/i', $filename) ? $filename : "file_$i.dat";
print($name);
这匹配 all
个字符(不区分大小写)。它将始终匹配您提供的任何文件名和 will never go to the else part
.
但是对于文件名,您不希望这样。您不想在文件名中包含 "special characters"。我推荐的正确正则表达式是只允许:
- 字母和数字
- _,.,-
- 扩展名只能是数字和字母。
- 扩展的大小必须是 3 或 4。'
这个正则表达式是我使用的:
preg_match('/^[a-zA-Z\d]{1}[\w\-\s]+.[\w\d]{3,4}/i', $filename)
这将允许第一个字符只能是字母或数字。从第二个字符到句点 (.) 它将允许字母、数字、- 和 _。然后扩展名可以是 3 或 4 个字符长。扩展名必须是字母或数字。
我想为要导入的文件指定一个自定义名称。所以在导入页面中我有两个文本字段 <input type='text' name='f[]' value='http://'>|<input type='text' name='n[]'>
。
当我只在文本区域中放置文件的 url 而没有放置任何名称时,文件被上传并且文件采用 url 的基本名称。但我想在上传文件时给它一个自定义名称。因此,当我将文件的 url 和我自己的自定义名称放在两个文本字段中时,会出现一些不同的名称,例如 "file_0.dat"。我尝试使用 $_POST[n] 获取名称,但没有成功。我正在共享导入操作脚本的一部分。请在这方面帮助我。
$i=0;
if(trim($_POST['n'][$i]) == '')
$_name = preg_match("~(.*)\.(\w)~i",basename($f)) ? basename($f) : "file_$i.dat";
else
$_name = preg_match("~(.*)\.(\w)~i",basename($_POST['n'][$i])) ? basename($_POST['n'][$i]) : "file_$i.dat";
如果您询问如何只更改文件的名称,您可以在文件上传后使用 PHP rename
函数来完成。
rename(basename($f), "/path_to_file/my_file.txt");
如果您问为什么您的文件名称为 file_0.dat
,那是因为基本名称与您提供的正则表达式不匹配。
试试这个正则表达式。
$filename = 'abc.zip';
$name = preg_match('/^(.)*/i', $filename) ? $filename : "file_$i.dat";
print($name);
这匹配 all
个字符(不区分大小写)。它将始终匹配您提供的任何文件名和 will never go to the else part
.
但是对于文件名,您不希望这样。您不想在文件名中包含 "special characters"。我推荐的正确正则表达式是只允许:
- 字母和数字
- _,.,-
- 扩展名只能是数字和字母。
- 扩展的大小必须是 3 或 4。'
这个正则表达式是我使用的:
preg_match('/^[a-zA-Z\d]{1}[\w\-\s]+.[\w\d]{3,4}/i', $filename)
这将允许第一个字符只能是字母或数字。从第二个字符到句点 (.) 它将允许字母、数字、- 和 _。然后扩展名可以是 3 或 4 个字符长。扩展名必须是字母或数字。