我在php中的文件上传中有这种错误。找到答案让我很头疼。当我检索某个文件上传的变量时,我无法检索它。继承我的代码。
//this is the php code for validating all post and pass it to db
<?php
$id = $_SESSION['id'];
$pic = '';
$message = '';
if(isset($_POST['add']))
{
include_once('database.php');
_addstocks($_POST);
$message = 'New Stocks Record Added';
echo $_POST['ipic'];
}
function post_value($key)
{
if(isset($_POST[$key]))
echo htmlentities($_POST[$key]);
}
?>
//这是我的表单或要传递给db的数据
<form class="modal-content container" style="width:445;" method="post" enctype="multipart/form-data" >
<br>
<label>Item Code</label><br>
<input type="text" name="icode" class="form-control" placeholder="Item Code" required autofocus><br>
<label>Item Name</label><br>
<input type="text" name="iname" class="form-control" placeholder="Item Name" required><br>
<label>Item Description</label><br>
<input type="text" name="idesc" class="form-control" placeholder="Item Description" required><br>
<!--<label>Item Type</label><br>-->
<input type="text" class="hidden" name="itype" value="perishable">
<label>Item Price</label><br>
<input type="text" name="iprice" placeholder="Item Price" class="form-control" required><br>
<label>Item Quantity</label><br>
<input type="text" name="iqty" placeholder="Item Quantity" class="form-control" required><br>
<input type="text" class="hidden" name="estabno" value="<?php echo "01";?>">
<div enctype="multipart/form-data">
<label>Upload Display Picture</label><br>
<label for="fileToUpload"><img src="photos/<?php echo $pic;?>" style="width:100px;height:100px"></label>
<input class=""type="file" name="ipic" id="fileToUpload"><br>
</div>
<input type="text" class="hidden" name="istat" value="available">
<?php echo htmlentities($message);?>
<input type="submit" name="add" value="Create" class="btn btn-success" style="float:right;" >
<br><br><br>
</form>
这是添加股票的数据库
function _addstocks($stocks)
{
$sql = "INSERT INTO inventory
(
itemcode,
itemname,
itemdesc,
itemcateg,
itemprice,
itempic,
estabno,
itemqty,
status
) VALUES (?,?,?,?,?,?,?,?,?)";
$db = database();
$st = $db->prepare($sql);
$st->execute(array(
$stocks['icode'],
$stocks['iname'],
$stocks['idesc'],
$stocks['itype'],
$stocks['iprice'],
$stocks['ipic'],
$stocks['estabno'],
$stocks['iqty'],
$stocks['istat'])
);
$db = null;
}
这是我得到的错误。 http://i.imgur.com/7M7l18j.png
答案 0 :(得分:1)
您需要通过$ _FILES [“ipic”] [“tmp_name”]访问它们 请参阅:http://www.w3schools.com/php/php_file_upload.asp
基本上,文件不是$ _POST / $ _ GET类型的请求。它是$ _FILES的一部分。那个页面应该会向你显示一些很好的用法。
更改:
echo $_POST['ipic'];
致:
echo $_FILES["ipic"]["tmp_name"]
要访问该文件,但这只会为您提供一个文件的路径,这是一个临时路径..您仍然需要移动文件或处理它。注意,在您的数据库中,您试图直接插入它..
您需要使用该链接中的“move_uploaded_file”将文件移动到文件夹,然后将URL的路径名称存储到数据库中,以便链接到该文件。
也可以存储某些项目,例如文件的base64版本,但取决于您的整体设计。