将图像文件添加到我的服务器时出现问题

时间:2019-06-12 10:12:31

标签: php

基本上,我试图将图像文件放入服务器的文件夹中,并在MYSQL BD中添加 dir 。它成功地将文件放入文件夹,并将路径链接添加到表中的行。 现在的问题是:当我尝试下载文件并显示它时,它会下载但没有任何显示,因此我在FTP中检查了文件,结果文件大小为0.1kb。我在做什么错以及如何解决?

我已经对该问题进行了一些研究,我可能会疯了,但我认为我是唯一遇到此问题的人,因为我无法在任何地方获得帮助。

这是我的代码;

$ImageData = $_POST['image_data'];
$ImageName = date("D M d, G:i");
$ImagePath = "albums/$ImageName.jpg";
$UploadPath =  __DIR__."/../".$ImagePath;

$img = $ImagePath; //to be inserted into DB row

//mysql ("INSERT INTO table...") query here

if($InsertSQL->rowCount()){
    file_put_contents($UploadPath,base64_decode($ImageData));
    // file_put_contents($UploadPath,$ImageData);
    echo "Your Image Has Been Uploaded.";
}

不适用:我使用base64_decode是因为我是从android对其进行编码的。

我希望文件以实际大小保存到服务器目录中。

2 个答案:

答案 0 :(得分:2)

文件存储在$_FILES中而不是$_POST中。

假设您表单中的字段称为image_data

$ImageTmpPath = file_get_contents($_FILES['image_data']['tmp_name']);
$ImageName = date("D M d, G:i");
$ImagePath = "albums/$ImageName.jpg";
$UploadPath =  __DIR__."/../".$ImagePath;

$img = $ImagePath; //to be inserted into DB row

//mysql ("INSERT INTO table...") query here

if($InsertSQL->rowCount()){
    file_put_contents($UploadPath,base64_decode($ImageTmpPath));
    echo "Your Image Has Been Uploaded.";
}

答案 1 :(得分:0)

因此,感谢@RiggsFolly和@Rust,文件实际上是用$ _FILES而不是$ _POST存储的 但实际上解决了我的问题的是 file_put_contents($UploadPath,base64_decode($ImageData));

应该是 move_uploaded_file(base64_decode($ImageTmpPath),$UploadPath);