【问题标题】:Upload image file to server, store name in MySQL DB将图像文件上传到服务器,将名称存储在 MySQL DB 中
【发布时间】:2018-07-20 03:53:42
【问题描述】:

我正在尝试创建文件上传,但我当前的脚本似乎无法正常工作,因为我认为它应该如此。

我已经成功地将数据保存在 MySQL 表中,但我似乎无法将文件放入“上传”目录?

if(isset($_POST['new']) && $_POST['new']==1){

    $folder = "uploads/";
    $upload_image = $folder . basename($_FILES["image1"]["name"]);
    move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $upload_image);


    $trn_date = date("Y-m-d H:i:s");
    $brand =$_REQUEST['brand'];
    $user =$_SESSION["username"];
    $model = $_REQUEST['model'];
    $serial =$_REQUEST['serial'];
    $purchasedate = $_REQUEST['purchasedate'];
    $img1 =$_REQUEST['image1'];
    $ins_query="insert into table
    (`user`,`trn_date`,`brand`,`model`,`serial`,`purchasedate`,`image1`)values
    ('$user','$trn_date','$brand','$model','$serial','$purchasedate','$img1')";
    mysqli_query($con,$ins_query)
    or die(mysql_error());
    $status = "added successfully.
    </br></br><a href='home.php'>home</a>";
}

【问题讨论】:

  • 你的文件名 image1 或 fileToUpload 是什么
  • 你有写uploads/的权限吗?
  • 是的@4givN,我认为是 755
  • 这是 image1 @VishnuBhadoriya

标签: php


【解决方案1】:
$upload_image = $folder . basename($_FILES["image1"]["name"]);
move_uploaded_file($_FILES["image1"]["tmp_name"], $upload_image);

【讨论】:

  • 这似乎没有移动我的文件
  • +1 - 尽管它仍然为代码注入敞开了后门。 @Liam,如果这不起作用,那么要么你不明白如何将它粘贴到你现有的代码中,要么还有另一个你没有告诉我们的错误。
  • 检查您的表单,您是否为文件输入元素提供了正确的名称。你也为你的表单设置了enctype= multipart/form-data 选项
【解决方案2】:

如果直接尝试doc 所说的话会怎样;)

$uploads_dir = '/uploads';//try over 'uploads' too or create a 'uploads' folder in you app_root
foreach ($_FILES["image1"]["error"] as $key => $error) {
    if ($error == UPLOAD_ERR_OK) {
        $tmp_name = $_FILES["image1"]["tmp_name"][$key];
        $name = $_FILES["image1"]["name"][$key];
        move_uploaded_file($tmp_name, "$uploads_dir/$name");
    }
}

【讨论】:

  • 并确保将 fileToUpload 替换为 image1
【解决方案3】:

可能Link

我在您的代码中发现了一个问题。

$folder = "uploads/";
$upload_image = $folder . basename($_FILES["image1"]["name"]);
move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $upload_image);

在这种情况下,文件没有扩展名

$folder = "uploads/";
$ext = explode('.', basename( $_FILES['image1']['name']));
$upload_image = $folder . basename($_FILES["image1"]["name"].$ext);
move_uploaded_file($_FILES["image1"]["tmp_name"], $upload_image);

uploads 文件夹与 php 脚本在同一目录中?

您还可以通过以下测试验证文件是否正确移动

if (file_exists($upload_image)){
echo "true";
}

在上传到服务器之前提供文件上传验证,以防止服务器恶意文件

如何在 php 中进行文件验证:Link

【讨论】:

  • 谢谢,它确实存在于同一目录中是的。 file_exists 返回 false :/
  • 你有权限写入文件夹上传吗?
  • 是的@Danielpaiva
  • "文件没有扩展名" - 是的。使用用户提供的名称意味着他们可以在服务器上部署他们喜欢的任何代码。
猜你喜欢
  • 2015-03-02
  • 1970-01-01
  • 2014-05-09
  • 1970-01-01
  • 2011-08-28
  • 2014-05-12
  • 2012-11-17
  • 2016-06-06
  • 2019-10-18
相关资源
最近更新 更多