【问题标题】:Moving Uploaded Images From Tmp Folder?从 Tmp 文件夹移动上传的图像?
【发布时间】:2014-03-14 14:58:07
【问题描述】:

从 Tmp 文件夹移动上传的图像?

我正在按照教程将图像存储到服务器上的文件夹中。

除非我在执行此操作时弄错了,否则图像总是首先存储到一个临时文件夹中,然后再移动。问题是我使用的是共享主机,所以我不知道 tmp 文件夹在哪里,所以我收到了这个错误:

无法将 /tmp/phpfwJ45w 移动到 uploads/image.jpg

上传次数设置为 777。

是否可以手动设置临时文件夹的路径?例如

https://dummydomain.com/tempuploads/

如果没有,我如何找到 tmp 文件夹的完整路径,或者是否有其他原因导致图像未上传?

我读过最好将图像存储到文件夹而不是数据库表中?

<?php 
include "connect.php"; 
function UploadOne($fname) 
{ 
$uploaddir = 'http://dummydomain.com/uploads/'; 
if (is_uploaded_file($fname['tmp_name'])) 
{ 
$filname = basename($fname['name']); 
$uploadfile = $uploaddir . basename($fname['name']); 
if (move_uploaded_file ($fname['tmp_name'], $uploadfile)) 
$res = "File " . $filname . " was successfully uploaded and stored.<br>"; 
else 
$res = "Could not move ".$fname['tmp_name']." to ".$uploadfile."<br>"; 
} 
else 
$res = "File ".$fname['name']." failed to upload."; 
return ($res); 
} 
?> 

<body> 
<?php 
if ($_FILES['picture']['name'] != "")   
{ 
$res = UploadOne($_FILES['picture']); 
$filname = $_FILES['picture']['name']; 
echo ($res); 
} 
?> 
<h1>UPLOADING FILES</h1> 
<form name="fupload" enctype="multipart/form-data" action="uploads.php" method="post"> 
<input type="file" name="picture" /> 
<input type="submit" value="Submit" /> 
</form> 
</body> 

【问题讨论】:

    标签: php upload


    【解决方案1】:

    您不应将 http:// URL 指定为 $uploaddir,而应指定相对于运行 php 脚本的路径的路径。

    另外:使用 move_uploaded_file() 时,您不需要知道 tmp 文件夹路径,它由 php.ini 设置。阅读here

    【讨论】:

      【解决方案2】:

      问题不在于 tmp_folder 或类似的东西。您需要设置不带域名的 $uploaddir(可能是您服务器上的路径):

       - $uploaddir = 'http://dummydomain.com/uploads/'; 
       + $uploaddir = getcwd() . '/uploads/';
      

      它会在与运行文件相同的文件夹中找到 /uploads/ 目录。

      不要将图像存储在数据库中!这不好。 :)

      【讨论】:

      • 为什么将图片存入数据库不好?
      • @Danny Chernyavsky 谢谢。它工作。我有一个表单,它将用户 cmets 存储并显示到数据库表中。我将使用这个脚本来允许他们上传图片。然后如何自动显示这些图像?我只希望用户看到他们上传的图像。有人可以链接到教程或告诉我应该搜索什么吗?
      • @Lucio 因为,如果你有太多的图像,数据库会非常大,而且一切都会很慢。您不会将其移动到它自己的静态服务器,配置为与静态一起正常工作。好吧,就我而言,将图像存储在数据库中是不好的做法。
      • @Nullbreaker 你只需要在数据库中存储一个图像链接。如果它可能只是在评论文本中 - 将标签 放在正确的位置,如果它只是附件 - 创建像 cmets_images 这样的表并将图像的 url 存储在那里(commentId => url)。我建议使用一些允许上传图像的 wisiwyg 编辑器(如 redactorjs)。在这种情况下,您只需要做服务器端工作(将图像移动到正确的位置),编辑器会将正确的标签放在评论的文本中。
      • Danny Chernyavsky 1、图片上传后如何自动生成图片路径? 2. 然后我是否使用变量将信息写入表格? 3. 我是否需要使用会话来限制上传图片的用户访问图片?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-21
      • 1970-01-01
      • 2014-04-03
      • 1970-01-01
      相关资源
      最近更新 更多