我正在尝试一个表单,其中人们可以提交要上载的文件,然后链接到mySQL数据库。
在html / php文件中:
<form enctype=”multipart/form-data” action="process_file.php" method="post" >
<!-- First/Last Name input boxes -->
<p>
<label for="fileUpload" id="fileUploadLabel">Proposal File (5MB Maximum):</label>
<input type="file" name="fileUpload[]" id="fileUpload" />
</p>
<input type="submit" name="submit" id="submit" />
</form>
process_file.php文件:
<?php
require("../../include/utility.php");
if($_SERVER["REQUEST_METHOD"]=="POST") {
print_r($_FILES);
$dbconn = connectToDB();
// Get and clean the data.
$fname = cleanInput($_POST["fname"]);
$lname = cleanInput($_POST["lname"]);
$new_filename = str_replace(' ','', basename($_FILES['fileupload']['name']));
$imageFileType = pathinfo($_FILES['fileUpload']['name'],PATHINFO_EXTENSION);
printf("File name: $new_filename <br />\n");
$target_dir = "../proposals/2016";
$target_file = $target_dir . $lname . "_" . $fname . "_proposal" . $imageFileType;
printf("File Type is: $imageFileType <br />\n");
}
/* [REDACTED] */
?>
print_r($ files)总是给我&#34; array()&#34;。我周末在网上环顾四周,今天相当多一点无济于事。
我已检查过enctype,我检查了拼写,是否已经检查,添加/删除&#34; []&#34;以及我能想到的任何其他事情。
我知道它适用于服务器的设置,因为同一服务器上的其他人已经能够使用它。
有没有人知道为什么这不起作用? (我可以提供更多[删除]部分,但由于$ _FILES为空,因此代码无法正常工作。
答案 0 :(得分:0)
完成代码:
”multipart/form-data”
- 那些卷曲的引号会扼杀你的剧本。
那些应该是常规"
引号:
"multipart/form-data"
然后您的文件输入保留了此名称属性name="fileUpload[]"
,您还在使用$_FILES['fileupload']
,其中数组是完全小写的。
数组是区分大小写的,应该读作$_FILES['fileUpload']
。
我也注意到,如果2016
是一个文件夹,则此$target_file = $target_dir . $lname
会转换为2016FILE.xxx
,而非可能的2016/FILE.xxx
。
因此,如果是这种情况,那么您需要向其添加一个尾部斜杠proposals/2016/
。
将error reporting添加到文件的顶部,这有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Then the rest of your code
旁注:只应在暂存时进行显示错误,而不是生产。