如果isset无法使用自动图像上传

时间:2018-01-03 11:27:13

标签: php jquery html sql

我有一个表单,使用JQuery在选择文件后立即自动提交表单。

图像已上传并正确显示,但表中未插入任何数据。

我已经尝试删除了“如果isset'正确地测试SQL插入数据并且确实如此,但显然需要if语句,因此每次加载页面时都不会向表中插入数据。

我认为问题是因为我删除了表单提交按钮,但是如果我在表单中将其添加回来,则在选择图像后不再自动提交。

$('#file').change(function() {
  $('#target').submit();
});


if(isset($_FILES['file'])){
  DB::query('INSERT INTO images VALUES(\'\', :image, :img_id)',array(':image'=>$image, ':img_id'=>$userid));
}
<form id="target" action="upload.php" name="target" method="POST" enctype="multipart/form-data">
  <img src="uploads/profileu<?=$userid?>u.jpg?=<?php echo rand() . "\n";?>">
  <label class="btn btn-primary glyphicon glyphicon-pencil">
    <input type="file" id="file" name="file" onchange="form.submit()" style="display:none">
  </label>
</form>

我还应该注意图像上传到本地文件夹并显示(正常工作),而SQL只是将1或0插入数据库(用户有图像或没有图像)

3 个答案:

答案 0 :(得分:1)

潜在的问题是我的表单action="upload.php"是用于上传图片的PHP全部存储的地方。这意味着我必须将if(isset)语句移到该页面的顶部而不是表单所在的页面。现在它完美无需提交按钮。

答案 1 :(得分:0)

您必须使用$_FILES['fileName']而不是$_FILE

要检查文件是否已成功上传,请使用。

if($_FILES["fileName"]["error"] == 0){ ... }

除此之外,您还可以检查上传的文件是否为图像,您可以将其检查为:

if(getimagesize($_FILES["fileName"]["tmp_name"])){ //Its an Image } else { //Invalid Image }

答案 2 :(得分:0)

因为您要插入$image$userid,所以应检查是否设置了这些变量。

像这样:

if (isset($image) && isset($userid)) {
  // insertion code
}