如何将文件名传送到php post方法

时间:2017-10-21 18:57:53

标签: php html file-upload

我正在尝试让我的代码带有用户上传的文件的名称(使用下面的代码),并在上传后打印字符串"您的文件thefilename.txt已上传"到屏幕,但行打印没有值到filename.txt该行只是:"您的文件已上传",我用文本输入测试它,它携带数据,但不是文件名,有什么帮助?

的index.php:

<form action="uxV637__.php" method="post" enctype="multipart/form-data">
    <input type="file" name="file_to_upload" id="file_to_upload"><br>
    <input type="submit" value="Upload"><br>
</form>

uxV637 __ PHP:

<?php
    $fname_ = $_POST['file_to_upload'];
    echo "Your file ".$fname_." has been uploaded...";
    echo "Text is: ".$_POST['text'];
    $ip = $_SERVER['REMOTE_ADDR'];
    $fname = substr(md5(microtime()),rand(0,26),5);
    move_uploaded_file($_FILES["file_to_upload"]["tmp_name"], "uploaded_files/".$fname.".txt.safe");
?>

3 个答案:

答案 0 :(得分:2)

在处理文件上传时,您应该使用$_FILES保留变量,而不是$_POST

你只需要替换它:

$fname_ = $_POST['file_to_upload'];

使用:

$fname_ = $_FILES['file_to_upload']['name'];

检查$_FILES保留变量文档: http://php.net/manual/en/reserved.variables.files.php

答案 1 :(得分:1)

您希望使用the superglobal $_FILES array,特别是与您的文件字段对应的数组的name键。

例如,在您的代码中,文件input字段名为file_to_upload,因此您可以使用$_FILES['file_to_upload']['name']访问文件名,如下所示:

echo "Your file " . $_FILES['file_to_upload']['name'] . " has been uploaded...";

请参阅$_FILES数组in the documentation的说明。

答案 2 :(得分:-1)

$('form').on('submit', function(){
 var name = $('input[type=file]').val()
 $('#inputHidden').value(name)
})   

使用jquery抓住提交事件,并将其作为隐藏输入类型的值附加