【发布时间】: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