【问题标题】:How do I correctly display a file extension from an HTML POST file using PHP?如何使用 PHP 从 HTML POST 文件中正确显示文件扩展名?
【发布时间】:2019-11-21 11:19:14
【问题描述】:

我正在尝试回应已上传税务文件的扩展名。文档可以是任何图像或 pdf。我计划稍后在代码中使用扩展名以适当的扩展名重命名文件。

目前它不回显扩展名。

我尝试了几种不同的方法并查看了文档和论坛。我好像还是做错了什么。

我的 HTML:

<input type="file" class="" id="TaxFile" name="TaxFile" accept="image/*,application/pdf" ><br /><br />

我的 PHP:

$taxpath = pathinfo($_FILES["TaxFile"]["tmp_name"]); echo $taxpath['extension'] . "\n123";

回声'123'

我的替代 PHP:

$taxpath = $_FILES["TaxFile"]["tmp_name"]; $ext = pathinfo($taxpath, PATHINFO_EXTENSION); echo $ext;

什么都没有

我希望看到回声: “.pdf 123" 和“pdf”

*我后来的代码确实使用move_uploaded_file($_FILES["TaxFile"]["tmp_name"], $target_file) 将文件保存到其目的地。只是 $target_file 不会包含正确的扩展名。

【问题讨论】:

  • 服务器上的临时文件没有任何扩展名。它主要是由 PHP 生成的随机字符串。
  • 谢谢 Álvaro González,这解释了为什么它一直返回为空!

标签: php forms file pathinfo


【解决方案1】:

如果您使用name 而不是tmp_name,这应该对您有用

$path_parts = pathinfo($_FILES["TaxFile"]['name']);
$extension = $path_parts['extension'];
echo $extension;

【讨论】:

  • 谢谢。看来我不知道“tmp_name”和“name”的区别。
【解决方案2】:

tmp_name 是磁盘上文件的临时名称/位置。

尝试使用$_FILES["TaxFile"]["name"] 获取原始文件名。

否则,您使用pathinfo()PATHINFO_EXTENSION 获取扩展名的方法是正确的。

【讨论】:

  • 谢谢,这解决了问题。感谢您解释“tmp_name”和“name”之间的区别。
【解决方案3】:

这样就解决了

$path = $_FILES['image']['name'];
$ext = pathinfo($path, PATHINFO_EXTENSION);

所以在你的文件中连接变量

echo $path.'.'.$ext;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多