【问题标题】:Fetching name of a file and insert it in the same form获取文件名并以相同的形式插入
【发布时间】:2018-09-15 04:57:40
【问题描述】:

我正在尝试获取上传文件的名称并将其设置为同一表单上隐藏输入的值。我已经尝试过了,它会上传文件但不发送文件名。

   if(isset($_FILES['image'])){
  $errors= array();
  $file_name = $_FILES['image']['name'];
  $file_size = $_FILES['image']['size'];
  $file_tmp = $_FILES['image']['tmp_name'];
  $file_type = $_FILES['image']['type'];
  $file_ext=strtolower(end(explode('.',$_FILES['image']['name'])));

  $expensions= array("jpeg","jpg","png");

  if(in_array($file_ext,$expensions)=== false){
     $errors[]="extension not allowed, please choose a JPEG or PNG file.";
  }

  if($file_size > 2097152) {
     $errors[]='File size must be excately 2 MB';
  }

  if(empty($errors)==true) {
     move_uploaded_file($file_tmp,"../img/plates/".$file_name);
     header("Location: backend.php");
  }else{
     print_r($errors);
  }

}

之后,我尝试将 $file_name 插入到与文件输入相同的形式中。像这样的

<input name="image" type="file" placeholder="Select photo">
<input type="hidden" value="<?php echo $file_name ?>" name="photo" />
<button type="submit" name="add">ADD NEW ITEM</button>

【问题讨论】:

  • 您在成功上传后重定向用户,这将使$file_name 之后为空。您能否更详细地解释您在这里尝试做什么?你想解决什么问题等?
  • @MagnusEriksson 我明白你现在在说什么。让我读一下它以及如何解决它。此表单将数据插入到 json 文件中,我想将上传文件的名称保存到名为“photo”的字段中。脚本的所有其余部分都可以正常工作。感谢您的评论,并对菜鸟问题表示抱歉。
  • 不用担心。我们都去过那里,提出问题是正确的学习方式(这就是这个网站的用途:-))。不过,你为什么需要那个?您已经在 $_FILES 数组中拥有该名称?
  • @MagnusEriksson 类似于 $_SESSION['NameOfFile'] = $_POST[$file_name]; /// 然后像 =$_SESSION['NameOfFile']?> 一样插入它?这个解决方案比 Danial 建议的使用 javascript 更好吗?
  • 我想我不明白你在这里实际上想做什么。当您在发布表单时已经在$_FILES-array 中获得了文件名,为什么还需要将文件名保存在单独的输入字段中?我对会话的建议是在发布后 重新填充表单。 JS 解决方案将在帖子之前 填充名称。完全不同的东西。但是由于您没有解释为什么或何时需要它,所以我不能说哪个更好。两种不同的用例。

标签: php


【解决方案1】:

你不能只通过 php 来做,因为 php 在请求和响应之后更新你的页面,如果你想在请求中获取文件名和文件,你可以使用这样的 java 脚本:

$("#imagefile").change(function(){
  $("#imagename").val(this.files[0].name);
}); 

并像这样更改您的代码:

<input id="imagefile" name="image" type="file" placeholder="Select photo">
<input id="imagename" type="hidden" value="<?php echo $file_name ?>" name="photo" />
<button type="submit" name="add">ADD NEW ITEM</button>

您可以在此链接阅读更多内容:

How to display file name for custom styled input file using jquery?

【讨论】:

  • 感谢代码老兄!但最重要的是,感谢您的解释。现在我明白为什么它以前不起作用了。
  • 这似乎没有必要。您在发布表单时已经在$_FILES['image']['name'] 中输入了姓名?
猜你喜欢
  • 2017-03-16
  • 2012-01-01
  • 1970-01-01
  • 2012-02-05
  • 1970-01-01
  • 2014-07-09
  • 2018-04-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多