首先,我的网站不是公共网站,但我希望用户能够通过手机上传照片。我正在使用运行iOS 9.x的iPhone 4。使用本机Safari浏览器。
上传表单我使用Chrome / Firefox等笔记本电脑完美运行,表格文字确实从我的iPhone上传,但照片无法上传,我的代码看不出任何问题。选择照片的过程可以正常工作,但是从iPhone上传似乎超时,尽管如上所述,表格(姓名,电话)中的文字确实已发送。也许有人可以看看,如果我遗失了某些东西,或者这可能是Safari / iPhone问题(没有错误),请告诉我。这是代码......
<?php
if($_POST['Name'] and $_POST['Telephone']){
//info sent from form
$Name =$_POST['Name'];
$Telephone =$_POST['Telephone'];
// To help protect from mysql injection
$Name = stripslashes($Name);
$Telephone = stripslashes($Telephone);
$Name = mysql_real_escape_string($Name);
$Telephone = mysql_real_escape_string($Telephone);
$sql = "INSERT into Clients (Name, Telephone) VALUES ('$Name', '$Telephone')";
mysql_query($sql) or die(mysql_error());
}
if(isset($_FILES['image'])){
$errors= array();
$file_name = $_FILES['image']['name'];
$file_size =$_FILES['image']['size'];
$file_tmp =$_FILES['image']['tmp_name'];
$file_type=$_FILES['image']['type'];
$file_ext=strtolower(end(explode('.',$_FILES['image']['name'])));
$extensions= array("jpeg","jpg","png");
if(in_array($file_ext,$extensions)=== false){
$errors[]="extension not allowed, please choose a JPEG or PNG file.";
}
if($file_size > 2097152){
$errors[]='File size must be less than 2 MB';
}
if(empty($errors)==true){
move_uploaded_file($file_tmp,"images/clients/".$Name.".jpg");
echo "Success";
}else{
print_r($errors);
}
}
?>
<form enctype="multipart/form-data" action="" method="POST">
<input name="Name" type="text" id="ADD-CLIENT-FORMS" maxlength="50" placeholder="Name" required>
<BR><BR>
<input name="Telephone" type="text" id="ADD-CLIENT-FORMS" maxlength="20" placeholder="Telephone" required>
<BR><BR>
<input id="image" type="file" name="image" accept="image/*" />
<button id="image_alt" type="button">Image (Optional)</button>
<BR><BR>
<input type="submit"/>
</form>
答案 0 :(得分:1)
实际上上面的代码是正确的,它做了它应该做的事情,对其他人可能有用,所以我会把它放在这里。我遇到问题的原因是我不希望iPhone照片大于上传脚本的php部分强加的2兆字节限制。嗯,他们更大 - 照片是一个惊人的3264px x 2448px和超过3兆字节。我最好的办法是在从iPhone上传照片之前创建一个调整照片大小的功能,不仅可以节省用户时间和带宽,还可以节省我的存储空间,但这一步将是另一章。
除了添加更多安全性之外,我对上述代码的唯一建议是使用CSS将错误警告定位在屏幕上,以便清楚地看到它们!
感谢所有可能花了一些时间的人....