基本上,我试图将图像文件放入服务器的文件夹中,并在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对其进行编码的。
我希望文件以实际大小保存到服务器目录中。
答案 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);