2015-03-13 2 views
1

Неужели кто-нибудь испытал/преодолел проблемы с загрузкой файлов через браузер на 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 
    } 
+0

Это зависит от того, как вы пишете PHP-скрипт загрузки. Покажите свои коды. Включили ли вы сообщение об ошибках и отображали ошибки? – Raptor

+0

Да. Загрузка на стороне PHP не является проблемой - он даже не может выбрать файл для загрузки. Он пуст, прежде чем вы сможете отправить/загрузить его. – Ladybro

+0

Я только что проверил. Загрузка файла в порядке, используя '' в iOS 8.2 Mobile Safari. – Raptor

ответ

1

Ваши HTML-коды содержат логические ошибки.

Любая кнопка тег без type="button" будет рассматриваться как кнопка Submit, которая действует так же, как следующее:

<input type="submit" value="Submit" /> 

Таким образом, чтобы решить вашу проблему, вы должны добавить type="button" в кнопках фото (по крайней мере, 2 кнопки, которые я заметил).

<button id="choosePhoto" type="button">Take photo</button> 
+0

рад, что я могу помочь. * купите мне кофе * lol – Raptor

+1

Отправить meh a btc адрес. – Ladybro

 Смежные вопросы

  • Нет связанных вопросов^_^