Неужели кто-нибудь испытал/преодолел проблемы с загрузкой файлов через браузер на iPhone?Загрузка файла iPhone из браузера не выполняется до белого экрана
У меня есть простая форма, которая берет имя, адрес электронной почты и прикрепление фотографий, отправляет их через почтовую функцию PHP при отправке и отлично работает на Android и на настольных браузерах.
<input id="selectPhotoInput" type="file" name="uploaded_file" accept="image/*">
Однако на iPhone, когда вы выбираете фотографию из камеры ролл, он просто приносит вам пустой белый экран, оставляя вам только возможность вернуться/начать заново.
В первом выпуске iOS8 зарегистрирована ошибка, где Safari не поддерживает загрузку файлов, но это происходит в нескольких браузерах, и эта ошибка была исправлена несколько месяцев назад.
Любая помощь приветствуется.
Редактировать: Включая мой PHP-код, хотя я не думаю, что это то, что вызывает проблему, поскольку я даже не могу добраться до точки, где я отправляю/вызываю этот файл.
<?php
// Pear library includes
// You should have the pear lib installed
include_once('Mail.php');
include_once('Mail/mime.php');
//Settings
$max_allowed_file_size = 3000; // size in KB
$allowed_extensions = array("jpg", "jpeg", "gif", "bmp", "png");
$upload_folder = './uploads/'; //<-- this folder must be writeable by the script
$your_email = 'redacted';//
$errors ='';
if(isset($_POST['submit']))
{
//Get the uploaded file information
$name_of_uploaded_file = basename($_FILES['uploaded_file']['name'].$name);
//get the file extension of the file
$type_of_uploaded_file = substr($name_of_uploaded_file,
strrpos($name_of_uploaded_file, '.') + 1);
$size_of_uploaded_file = $_FILES["uploaded_file"]["size"]/1024;
///------------Do Validations-------------
if(empty($_POST['name'])||empty($_POST['email']))
{
$errors .= "\n Name and Email are required fields. ";
}
if(IsInjected($visitor_email))
{
$errors .= "\n Bad email value!";
}
if($size_of_uploaded_file > $max_allowed_file_size)
{
$errors .= "\n Size of file should be less than $max_allowed_file_size";
}
//------ Validate the file extension -----
$allowed_ext = false;
for($i=0; $i<sizeof($allowed_extensions); $i++)
{
if(strcasecmp($allowed_extensions[$i],$type_of_uploaded_file) == 0)
{
$allowed_ext = true;
}
}
if(!$allowed_ext)
{
$errors .= "\n The uploaded file is not supported file type. ".
" Only the following file types are supported: ".implode(',',$allowed_extensions);
}
//send the email
if(empty($errors))
{
//copy the temp. uploaded file to uploads folder
$path_of_uploaded_file = $upload_folder . $name_of_uploaded_file;
$tmp_path = $_FILES["uploaded_file"]["tmp_name"];
if(is_uploaded_file($tmp_path))
{
if(!copy($tmp_path,$path_of_uploaded_file))
{
$errors .= '\n error while copying the uploaded file';
}
}
//send the email
$name = $_POST['name'];
$visitor_email = $_POST['email'];
$phone = $_POST['phone'];
$user_message = $_POST['message'];
$to = "[email protected]";
$subject="TicketSharks: Fresh blood! ($name)";
$from = $your_email;
$text = "$user_message";
$msg_body = "Name: " . $name ."<br>";
$msg_body .= "Phone: " . $phone ."<br>";
$msg_body .= "Email: " . $visitor_email ."<br>";
$msg_body .= "Message: " . $text ."<br>";
$message = new Mail_mime();
$message->setTXTBody($msg_body);
$message->addAttachment($path_of_uploaded_file);
$body = $message->get();
$extraheaders = array("From"=>$from, "Subject"=>$subject,"Reply-To"=>$visitor_email);
$headers = $message->headers($extraheaders);
header('Location: thank-you.html');
$mail = Mail::factory("mail");
$mail->send($to, $headers, $body);
//redirect to 'thank-you page
}
Это зависит от того, как вы пишете PHP-скрипт загрузки. Покажите свои коды. Включили ли вы сообщение об ошибках и отображали ошибки? – Raptor
Да. Загрузка на стороне PHP не является проблемой - он даже не может выбрать файл для загрузки. Он пуст, прежде чем вы сможете отправить/загрузить его. – Ladybro
Я только что проверил. Загрузка файла в порядке, используя '' в iOS 8.2 Mobile Safari. – Raptor