PHP文件上载和tmp文件

PHP文件上载和tmp文件,php,Php,因此,我正在创建一个类来处理从表单上传的文件。我遇到的问题是在将文件从临时文件重命名为新文件的过程中。My类允许用户手动指定文件名,或使用与上载时相同的名称。现在,如果我手动设置名称,我需要知道要添加到文件的扩展名。由于临时文件夹不包含扩展名,我不希望在$file['uploadedfile']['name']期间将其分解,建议我怎么做 我想我的第一个问题是:有没有办法配置服务器/php,使其在放入temp文件夹时不会重命名文件,这样我就可以使用pathinfo作为扩展名 您无法控制临时名称,但

因此,我正在创建一个类来处理从表单上传的文件。我遇到的问题是在将文件从临时文件重命名为新文件的过程中。My类允许用户手动指定文件名,或使用与上载时相同的名称。现在,如果我手动设置名称,我需要知道要添加到文件的扩展名。由于临时文件夹不包含扩展名,我不希望在$file['uploadedfile']['name']期间将其分解,建议我怎么做


我想我的第一个问题是:有没有办法配置服务器/php,使其在放入temp文件夹时不会重命名文件,这样我就可以使用pathinfo作为扩展名

您无法控制临时名称,但可以使用$\u FILES['file']['name']获取原始扩展名,因为它包含来自用户计算机的文件名。您可以将该文件名传递给pathinfo。当然,仅仅因为扩展名是一回事,并不意味着文件就是这种类型的

var_dump(pathinfo('testfile.png'));

array(4) {
  ["dirname"]=>
  string(1) "."
  ["basename"]=>
  string(12) "testfile.png"
  ["extension"]=>
  string(3) "png"
  ["filename"]=>
  string(8) "testfile"
}
有没有办法配置服务器/php,使其在放入temp文件夹时不会重命名文件

没有

有人会建议我怎么做


使用原始扩展名,可以是键入的扩展名,也可以是$_FILES[x]['name']中的扩展名。这有什么问题?

pathinfo需要一个文件路径作为其参数$_FILES['file']['name']只是名称。如果文件有两个扩展名,这会考虑在内吗?从技术上讲,一个文件只能有一个扩展名。它只会在最后一个句点之后返回字符串。something.tar.gz是一个gz文件,pathinfo无法知道myfile.2011-01-01.13:23:00.txt、view.script.php或x.tar.gz之间的区别。它会处理具有两个扩展名的文件吗?@headpin:如果你说的是pathinfo,它只会使用最后一个扩展名。但是如果你想对上传的文件做一些有用的事情,你已经需要了解它的类型,这意味着你知道它应该有什么扩展名。仅仅通过字符串解析,您无法完全可靠地确定什么是扩展,什么是名称的一部分。