使用post PHP将图像上传到服务器

时间:2016-05-23 13:53:19

标签: php html api post

我计划开发一个图像上传API,它需要将图像作为项目的一部分上传到服务器位置。 (用法是使用Android应用程序上传用户照片和头像)

API应与Imgur API类似,我们可以使用post请求将二进制映像上传到服务器。

我搜索了多个问题,所有人都在使用需要html表单提交的多部分请求。由于我的目标是创建一个API,因此提交html表单是不可能的。

无论如何我都提交了一个使用html表单上传图片的示例代码。有人可以告诉我如何修改脚本以满足我的要求?

            $this->db->select('*');
            $this->db->from('Cases c'); 
            $this->db->join('Users u', 'u.user_id=c.user_id', 'left');
            $this->db->join('user_role r', 'r.user_id=c.user_id', 'left');
            $this->db->where('c.user_id',$id);
            $query = $this->db->get();

PHP代码

  <html>
          <body>

<form action="photo.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="Submit">
</form>
                </body>
                </html>

2 个答案:

答案 0 :(得分:1)

关于服务器端代码的一些评论没有特别的顺序:

  • 您可以在Handling file uploads阅读,验证上传的正确方法是将['error']子项与UPLOAD_ERR_OKcodes explained here)进行比较。不要使用['tmp_name']

  • 不要让最终用户在服务器上选择实际的文件名。您最好自己生成一个唯一的名称,并将显示名称保留在别处(例如数据库)

  • 确定文件扩展名的推荐方法是pathinfo

    pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION)
    
  • 用户提供的文件扩展名不是确定文件类型的可靠方法。对于图片,经常使用getimagesize功能。

答案 1 :(得分:0)

  

多部分请求,需要提交html表单

那是错的。它需要格式正确的请求(标​​题和正文),句点。实际上,服务器无法知道用于生成请求的软件是什么 - 或者您是否只是在控制台中输入了字节; - )