【问题标题】:0 kb when upload and store image to server将图像上传并存储到服务器时为 0 kb
【发布时间】:2016-11-08 19:58:50
【问题描述】:

我有一个名为images 的表。它有两列 idimage (varchar300)。我有这个代码 upload.php :

<?php 
if($_SERVER['REQUEST_METHOD']=='POST'){
$image = $_POST['image'];
require_once('dbConnect.php');
$sql ="SELECT id FROM images ORDER BY id ASC";
$res = mysqli_query($con,$sql);
$id = 0;
while($row = mysqli_fetch_array($res)){
$id = $row['id'];
}
$path = "uploads/$id.png";
$actualpath = "/home/kinanday/public_html/$path";
$sql = "INSERT INTO images (image) VALUES ('$actualpath')";

if(mysqli_query($con,$sql)){
file_put_contents($path,base64_decode($image));
echo "Successfully Uploaded";
}
mysqli_close($con);
}else{
echo "Error";
}

这是upload.html:

<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="image" />
<button>Upload</button>
</form>
</body>

问题是:它保存到我的数据库中,但我在 Cpanel 的文件管理器中的图像是 0kb

我正在使用此代码集成到我的 android 应用程序中,该应用程序需要 varchar 类型的图像。所以在我的应用程序中没有显示任何图像,因为图像是 0KB。

任何人都可以提前修复我的 php.ini 文件。每个答案对我都非常有帮助。提前致谢。

【问题讨论】:

  • $image = $_POST['image']; => $image = $_FILES['image']; 魔法可能会发生。您还需要使用提交类型按钮。
  • @Fred-ii- 警告:base64_decode() 期望参数 1 为字符串,数组在第 26 行的 /home/kinanday/public_html/image_content/upload.php 中给出,但图像大小仍为 0Kb :(

标签: php android mysql image


【解决方案1】:

正如@Fred-ii- 所说,您需要使用 $_FILES 超全局变量。 但$image = $_FILES['image'] 是一个数组,请在此处查看它的选项:http://php.net/manual/en/features.file-upload.post-method.php

例子:

$image_name = $_FILES['image']['name'];
$image_size = $_FILES['image']['size'];
$image_tmpname = $_FILES['image']['tmp_name'];  // this is a temporary name that php uses on every upload he does.
$image_type = $_FILES['image']['type'];
$image_error = $_FILES['image']['error'];

【讨论】:

  • 我以前读过,但我真的是 php 脚本的新手。我应该在我的表中添加新的列(图像)吗?我的表中只有 teo coloums id 和 image @leo_ap
  • 您应该添加列来存储您以后需要使用的数据。如果您需要使用“大小”,那么,创建“大小”列。如果你只想显示图片,那么“名称”就绰绰有余了,你可以将它存储在你已经拥有的这个列中。
  • 不要忘记使用函数 move_uploaded_file: php.net/manual/en/function.move-uploaded-file.php 因为它对于 php 上传非常重要。你必须使用它。基本上你需要: move_uploaded_file($_FILES['image']['tmp_name'], "YOUR-UPLOAD-FOLDER/YOUR-IMAGE-NAME-PLUS-EXTENSION");
  • 这个函数有两个参数,第一个是上传文件的临时名称(这个由php内部处理),第二个是你将发送文件的路径,包括文件new名称及其扩展名,例如:move_uploaded_file($_FILES['image']['tmp_name'], "my-uploads-folder/image001.jpg");
  • 不,tmp_name 只是一个临时名称,仅用于在将文件移动到上传文件夹时引用该文件。无需将其存储在数据库中
猜你喜欢
  • 2015-03-02
  • 1970-01-01
  • 2012-03-22
  • 1970-01-01
  • 2011-11-18
  • 2014-05-09
  • 2021-03-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多