开发者社区> 问答> 正文

写了一个简单的html/php上传的网页,在安卓和电脑上都正常,但ipad上都有问题,即图片上传名称都自动变成image.jpg

ipad的safari或chrome都是这样的问题。

<!--表单-->
<div id="upload">
<form action="upload_file.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>
</div>
// upload_file.php
<?php
error_reporting(E_ERROR| E_PARSE);
session_start();
$name=$_SESSION["free_print_name"];
$phone=$_SESSION["free_print_phone"];
if (!file_exists("/var/www/upload_files/".$phone)) {
    mkdir("/var/www/upload_files/".$phone);
}
$DIR="/var/www/upload_files/".$phone."/";
$temp_array=explode('.', $_FILES["file"]["name"]);
$postfix=$temp_array[count($temp_array)-1];
if (
    ($postfix=="pdf"
        || $postfix == "doc"
        || $postfix == "docx"
        || $postfix == "rtf"
        || $postfix == "ppt"
        || $postfix == "jpg"
        || $postfix == "jpeg"
        || $postfix == "png"
        || $postfix == "psd")
    && ($_FILES["file"]["size"] < 20000000)) {
    if ($_FILES["file"]["error"] > 0) {
        // echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
    } else {
        echo "Upload: " . $_FILES["file"]["name"] . "<br />";
        echo "Type: " . $_FILES["file"]["type"] . "<br />";
        echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
        echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";
        if (file_exists($DIR . $_FILES["file"]["name"])) {
            echo $_FILES["file"]["name"] . " already exists. ";
            header('Location: http://59.78.7.9/index.html');
        } else {
            move_uploaded_file($_FILES["file"]["tmp_name"], $DIR. $_FILES["file"]["name"]);
            echo "Stored in: " . $DIR . $_FILES["file"]["name"];
            header('Location: http://59.78.7.9/index.html');
        }
    }
} else {
    echo "Invalid file, you can't upload files of ".$postfix;
}
?>

展开
收起
杨冬芳 2016-06-15 19:05:06 2626 0
1 条回答
写回答
取消 提交回答
  • IT从业

    1.这就对了。ipad里的照片根本就没有“文件名”这个概念。
    2.存储文件时也不要文件名一样就丢弃啊……文件存储又不是抢占式的……
    3.同名文件加后缀,或者干脆整个文件计算SHA-1后用校验值做文件名。
    4.判断文件类型不能依赖文件的扩展名,而要使用exif_imagetype()函数检查实际文件头。

    2019-07-17 19:40:04
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
阿里云栖开发者沙龙PHP技术专场-直面PHP微服务架构挑战-高驰涛 立即下载
PHP安全开发:从白帽角度做安全 立即下载
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载