我正在尝试让我的代码带有用户上传的文件的名称(使用下面的代码),并在上传后打印字符串"您的文件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");
?>
答案 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抓住提交事件,并将其作为隐藏输入类型的值附加