【发布时间】:2016-05-23 23:46:53
【问题描述】:
我计划开发一个图像上传 API,它需要将图像上传到服务器位置,作为我项目的一部分。 (用法是使用安卓应用上传用户照片和头像)
API 应该类似于Imgur API,我们可以在其中使用 post 请求将二进制图像上传到服务器。
我搜索了多个问题,得到的都是使用需要提交 html 表单的多部分请求。由于我的目标是创建 API,因此无法提交 html 表单。
无论如何,我正在提交一个使用 html 表单上传图像的示例代码。有人可以告诉我如何修改脚本以满足我的要求吗?
<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>
PHP 代码
<?php
$allow = array("jpg", "jpeg", "gif", "png");
$todir = 'uploads/';
if (!!$_FILES['file']['tmp_name'] ) // is the file uploaded yet?
{
$info = explode('.', strtolower( $_FILES['file']['name']) ); // whats the extension of the file
if ( in_array( end($info), $allow) ) // is this file allowed
{
if ( move_uploaded_file( $_FILES['file']['tmp_name'], $todir . basename($_FILES['file']['name'] ) ) )
{
// the file has been moved correctly
}
}
else
{
// error this file ext is not allowed
}
}
?>
【问题讨论】:
-
语法是否有效
!!$_FILES['file']['tmp_name']??双!! -
哎呀。纠正它。感谢您提供信息。
-
等待“!!”我认为实际上更有意义,现在您似乎仅在没有文件上传时才运行验证代码。双重感叹“!!”只是将一个值转换为布尔值,因为它只是意味着错误的 fasle。所以它将接受一个变量并评估它的布尔值,然后应用一个逻辑'NOT',再次执行它只会将一个变量转换为布尔值,但由于它处于 if 条件下它无论如何都会完成,所以我不看到这里的重点。但是,在您编辑之后,它实际上看起来完全错误。
-
这是有道理的。再次编辑我的代码。