PHP上传图片

时间:2015-02-15 12:54:48

标签: php image upload

我正在努力让PHP处理已发布的图片。可以获得临时链接的代码在这里:

$file = file_get_contents($_FILES["pic"]["name"]);

但是我收到了错误

  

警告:file_get_contents():文件名不能为空

图片肯定会在运行时发布:

echo $_POST['pic']; 

打印图像的名称。

我不确定我在这里做错了什么?表单中的字段名称是 pic

感谢您的帮助。

编辑:

然后要将图像上传到Imgur。

编辑:

包含HTMl以供参考:

<form class="form-horizontal" enctype="multipart/form-data" name="additem" role="form" method="POST" action="add.php">
  <div class="alert alert-info" role="alert">Photos will be uploaded to <a href="http://imgur.com">imgur</a></div>
  <div class="form-group">
      <label for="dept">Department</label>
      <select class="form-control" name="dept" id="dept">
      <option>Options...</option>
    </select>
    </div>

    <div class="form-group">
    <label for="pic">Image link</label>
    <input class="form-control" type="file" id="pic" name="pic"></input>
    </div>

    <div class="form-group">
    <label for="description">Description</label>
    <textarea class="form-control" rows="3" id="description" name="description"></textarea>
    </div>

    <div class="form-group">
    <button type="submit" class="btn btn-success">Add</button>
    </div>
</form>

5 个答案:

答案 0 :(得分:0)

根据relevant comment in documentation,文件暂时存储在系统中的某个位置。 name只是一个字符串。

$file = file_get_contents($_FILES["pic"]['tmp_name']);

出于好奇:您是否在type='file'控件上设置了input

答案 1 :(得分:0)

$ext = pathinfo($_FILES['pic']['name'], PATHINFO_EXTENSION);
$filename = "./your-image.$ext";
if(move_uploaded_file($_FILES['pic']['tmp_name'], $filename)) {
    $file = file_get_contents($filename);
}

答案 2 :(得分:0)

根据PHP docs (Handling file uploads),您可能想要访问文件的内容,而不是文件名。因此,您需要使用:

$filecontents = file_get_contents($_FILES['pic']['tmp_name']).

答案 3 :(得分:0)

找到了修复:

将enctype添加到表单并向标记添加DOCTYPE的组合解决了问题。

感谢所有帮助过的人

答案 4 :(得分:-1)

要上传文件,您需要添加

enctype="multipart/form-data"

作为表单标记的属性。 请参阅:PHP 5 File Upload