- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将文件上传到某个目录。该目录记录在数据库中。但是,代码无法读取 $_FILES
我每次尝试上传文件时都会得到空值。但其他输入数据都记录到数据库中。发生的情况是我无法在数据库中记录文件名,它只是空白。
if(isset($_POST['btn-upload'])){
$record_title = $_POST['record_title'];
$record_recieved_date_time = $_POST['record_recieved_date_time'];
$record_checked_date_time = $_POST['record_checked_date_time'];
$record_approved_date_time = $_POST['record_approved_date_time'];
$record_status = $_POST['record_status'];
$record_remarks = $_POST['record_remarks'];
$record_type = $_POST['record_type'];
$file = $_FILES['file']['name'];
$sql = "INSERT INTO records (record_id , record_title , record_recieved_date_time , record_checked_date_time , record_approved_date_time , record_status ,record_remarks , file , record_type)
VALUES (NULL, '$record_title' , '$record_recieved_date_time','$record_checked_date_time','$record_approved_date_time' , '$record_status ' , '$record_remarks' , '$file' , '1')";
if (mysqli_query($dbconfig, $sql)) {
header('Location:memberAWP.php');
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($dbconfig);
}
}
这是表单,我在 Bootstrap 的帮助下使用模态
<form method="post" action="" enctype="multipart/form-data name="loginform" class="form-horizontal">
<div class="form-group">
<label class="control-label col-sm-2" for="record_title"> TITLE </label>
<div class="col-sm-10">
<input type="text" class="form-control" id="record_title" name = "record_title" placeholder="Enter Title">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2" for="record_recieved_date_time"> RECIEVED DATE / TIME </label>
<div class="col-sm-10">
<input type="datetime-local" class="form-control" id="record_recieved_date_time" name = "record_recieved_date_time" placeholder="Enter RECIEVED DATE / TIME">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2" for="record_checked_date_time"> CHECKED DATE / TIME </label>
<div class="col-sm-10">
<input type="datetime-local" class="form-control" id="record_checked_date_time" name = "record_checked_date_time" placeholder="Enter CHECKED DATE / TIME">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2" for="record_approved_date_time"> APPROVED DATE / TIME</label>
<div class="col-sm-10">
<input type="datetime-local" class="form-control" id="record_approved_date_time" name = "record_approved_date_time" placeholder="Enter APPROVED DATE / TIME">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2" for="record_status"> STATUS </label>
<div class="col-sm-10">
<input type="text" class="form-control" id="record_status" name = "record_status" placeholder="Enter STATUS">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2" for="record_remarks"> REMARKS </label>
<div class="col-sm-10">
<input type="text" class="form-control" id="record_remarks" name = "record_remarks" placeholder="Enter REMARKS">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2" for="file"> ATTACHMENTS </label>
<div class="col-sm-10">
<input type="file" class="form-control" id="file" name="file" placeholder="Enter ATTACHMENTS">
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" name="submit" value="submit" class="btn btn-default">Submit</button>
</div>
</div>
</form>
最佳答案
if( isset( $_POST['btn-upload'], $_FILES['file'] ) ){
/*
The sql is vulnerable to sql injection as you directly embed variables within the sql
rather than using `prepared statements` so some extra care ought to be taken with the supplied
data, perhaps use:
filter_input( INPUT_POST, 'record_title', FILTER_SANITIZE_STRING );
*/
$record_title = $_POST['record_title'];
$record_recieved_date_time = $_POST['record_recieved_date_time'];
$record_checked_date_time = $_POST['record_checked_date_time'];
$record_approved_date_time = $_POST['record_approved_date_time'];
$record_status = $_POST['record_status'];
$record_remarks = $_POST['record_remarks'];
$record_type = $_POST['record_type'];
/*
Access the uploaded file as an object for simplicity
and use the values for saving the file etc
*/
$obj=(object)$_FILES['file'];
$file = $obj->name;
$size = $obj->size;
$tmp = $obj->tmp_name;
$type = $obj->type;
$error= $obj->error;
if( is_uploaded_file( $tmp ) && $error == UPLOAD_ERR_OK ){
/* determine the location the file should be saved to */
$destination = '/path/to/folder/' . $file;
/* Save the file */
$result = move_uploaded_file( $tmp, $destination );
/* Proceed with the sql command if the file was saved OK */
if( $result ){
$sql = "INSERT INTO records ( `record_title`, `record_recieved_date_time`, `record_checked_date_time`, `record_approved_date_time`, `record_status`, `record_remarks`, `file`, `record_type`)
VALUES ( '$record_title', '$record_recieved_date_time', '$record_checked_date_time', '$record_approved_date_time', '$record_status', '$record_remarks', '$file', '1' )";
$result = mysqli_query( $dbconfig, $sql );
if( $result )header('Location:memberAWP.php');
else echo "Error: " . $sql . "<br>" . mysqli_error($dbconfig);
}
}
}
正如评论中所指出的,确保表单具有正确的 enctype
属性集 - 对于文件上传,它应该是 enctype='multipart/form-data'
除非您使用 move_uploaded_file()
函数,否则文件将在垃圾收集删除它以及对该文件的引用之前在 tmp
目录中保留一段有限的时间(在数据库)将不再有效。
关于php - 上传文件并访问$_FILES,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41501326/
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 9
我有一个选择多个文件的文件输入,如下所示: 当用户选择一个文件(或多个文件)时,我使用 Javascript 将 id 和类更新为“oldFile”,然后添加另一个文件输入,但使用 file2[]
我正在使用 PUT 方法在前端使用 dropzone.js 上传文件。然而,当我想处理文件时,Symfony 的 Request 对象和 $_FILES 数组都是空的。 我已经检查了 this hug
我正在使用 PUT 方法在前端使用 dropzone.js 上传文件。然而,当我想处理文件时,Symfony 的 Request 对象和 $_FILES 数组都是空的。 我已经检查了 this hug
这个问题已经有答案了: jQuery not posting all inputs of a form after the .append() (5 个回答) 已关闭 3 年前。 我目前有一个带有单个
我在使用 Alamofire 将文件上传到服务器时遇到了一些问题。 文件上传良好,但上传应出现的变量为空:FILES:array(0) {\n}\nPOST:array(0) {\n}\n 并且使用该
我正在尝试将文件上传到某个目录。该目录记录在数据库中。但是,代码无法读取 $_FILES 我每次尝试上传文件时都会得到空值。但其他输入数据都记录到数据库中。发生的情况是我无法在数据库中记录文件名,它只
我正在尝试将多个图像上传到 php 服务器,但由于某种原因,它对所有上传的图像使用第一个图像名称,保存到相同的图像名称。我希望它保存到源文件夹中的文件名中。像Banner1.jpg一样,Banner2
我正在尝试将图像存储到 mysql 数据库中,但在 ajax 页面中 $_FILE['textfield_Name']['temp_name'] 无法识别它。帮我解决这个问题。 这是我的文件页面代码
所以,我最近研究了如何使用 Blob 将文件上传到数据库。这是我找到的教程http://www.php-mysql-tutorial.com/wikis/mysql-tutorials/uploadi
这个问题在这里已经有了答案: What does enctype='multipart/form-data' mean? (9 个回答) 关闭 7 年前。 我正在尝试创建一个脚本来上传 .mp3 文
好吧,有一点前言:我一直在致力于将拖放文件上传功能添加到名为 Moodle 的类(class)管理系统(特别是 2.0.1)中。该版本的Moodle使用YUI3框架,通过io-upload-ifram
这个问题已经有答案了: Sending multipart/formdata with jQuery.ajax (13 个回答) 已关闭 6 年前。 在描述我的问题之前,我确实在互联网和本网站上进行了
所以我正在为我妈妈开发一个网站,她想从她的相机上传照片,我首先用我在计算机上找到的一张普通图片测试了我的代码,该图片是在 photoshop CS6 和 $_FILES 数组中创建的没关系: arra
我整天都在为这个问题苦苦挣扎,厌倦了被困住。今天早上花了半个小时在我现在坚持使用的同一个应用程序上为个人资料图片做了一个不错的小自定义 uploader 。 这里的问题不是上传(我已经记下了),而是将
我正在尝试调试 $_FILES 数组的一个非常奇怪的问题。当我尝试上传文件时,仅设置了“名称”键,类型、tmp_name 等为空,并返回错误 #1。例如: Array ( [name] =>
当尝试访问$_FILES 数组时,PHP 返回错误 "Undefined index: picture". 在我的php.ini 文件中,File Uploads 是打开的,任何用户都可以在/tmp
这是我的 html 页面,其中包含表单: Dosya Adı:
我正在处理一个 PHP 上传脚本,在测试我的错误检查时,我试图上传一个 17MB 的 TIFF 文件。当我这样做时,$_FILES 数组是空的。该脚本可以很好地满足我需要它执行的操作,即上传 JPEG
我在用 PHP 上传多个文件时遇到一点问题, 我有这个 html 表单: 这是 upload.php : 当我发送文件时,它会显示: Array ( [myfile] =>
我是一名优秀的程序员,十分优秀!