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;
}
?>
1.这就对了。ipad里的照片根本就没有“文件名”这个概念。
2.存储文件时也不要文件名一样就丢弃啊……文件存储又不是抢占式的……
3.同名文件加后缀,或者干脆整个文件计算SHA-1后用校验值做文件名。
4.判断文件类型不能依赖文件的扩展名,而要使用exif_imagetype()函数检查实际文件头。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。