За последние 24 часа нас посетили 18926 программистов и 1641 робот. Сейчас ищут 1678 программистов ...

Загрузка второго файла

Тема в разделе "JavaScript и AJAX", создана пользователем leshiy, 17 дек 2016.

  1. leshiy

    leshiy Активный пользователь

    С нами с:
    18 июл 2008
    Сообщения:
    90
    Симпатии:
    0
    Есть код который загружает на сервер один файл с прогрессбаром.
    Нужно добавить еще и картинку.
    Код (Javascript):
    1. <html>
    2. <head>
    3. <script>
    4. function _(el){
    5. return document.getElementById(el);
    6. }
    7. function uploadFile(){
    8. var file = _("file1").files[0];
    9. var formdata = new FormData();
    10. formdata.append("file1", file);
    11. var ajax = new XMLHttpRequest();
    12. ajax.upload.addEventListener("progress", progressHandler, false);
    13. ajax.addEventListener("load", completeHandler, false);
    14. ajax.addEventListener("error", errorHandler, false);
    15. ajax.addEventListener("abort", abortHandler, false);
    16. ajax.open("POST", "file_upload_parser.php");
    17. ajax.send(formdata);
    18. }
    19. function progressHandler(event){
    20. _("loaded_n_total").innerHTML = "Uploaded "+event.loaded+" bytes of "+event.total;
    21. var percent = (event.loaded / event.total) * 100;
    22. _("progressBar").value = Math.round(percent);
    23. _("status").innerHTML = Math.round(percent)+"% upload... please wait";
    24. }
    25. function completeHandler(event){
    26. _("status").innerHTML = event.target.responseText;
    27. _("progressBar").value = 0;
    28. }
    29. function errorHandler(event){
    30. _("status").innerHTML = "Upload Failed";
    31. }
    32. function abortHandler(event){
    33. _("status").innerHTML = "Upload Aborted";
    34. }
    35. </script>
    36. </head>
    37. <body>
    38. <form id="./" method="post" enctype="multipart/form-data">
    39.    <input type="file" name="file1" id="file1"><br>
    40.                     <input type="file" name="jpg" id="jpg">
    41.       <input type="button" value="Upload File" onClick="uploadFile()"><br>
    42.       <progress id="progressBar" value="0" max="100" style="width:300px;"></progress>
    43.       <h3 id="status"></h3>
    44.       <p id="loaded_n_total"></p>
    45.     </form>
    46.     </body>
    47.     </html>
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Мало информации
     
  3. leshiy

    leshiy Активный пользователь

    С нами с:
    18 июл 2008
    Сообщения:
    90
    Симпатии:
    0
    Есть еще и сам файл загрузки на сервер "file_upload_parser.php"
    PHP:
    1. <?php
    2. $fileName = $_FILES["file1"]["name"];
    3. $fileTmpLoc = $_FILES["file1"]["tmp_name"];
    4. $fileType = $_FILES["file1"]["type"];
    5. $fileSize = $_FILES["file1"]["size"];
    6. $fileErrorMsg = $_FILES["file1"]["error"];
    7. if (!$fileTmpLoc) {
    8. echo "ERROR";
    9. exit();
    10. }
    11. if(move_uploaded_file($fileTmpLoc, "111/$fileName")){
    12. echo "$fileName ok";
    13.  
    14. }
    15. else {echo "move_uploaded_file function failed";}
    16.    ?>
    и мне нужно помимо этого файла что бы загружалась бы картинка из поля
    <input type="file" name="jpg" id="jpg">
    и в другую папку.
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @leshiy тебе подсказать как правильно и что можно улучшить в коде или и так сойдёт?
    Плохой вариант это просто продублировать твой код ещё раз изменив file1 на jpg в php коде там где $_FILES
     
  5. leshiy

    leshiy Активный пользователь

    С нами с:
    18 июл 2008
    Сообщения:
    90
    Симпатии:
    0
    Лучше конечно улучшить.
    А что касается просто продублировать не пойдет там же передается информация о файле через js.
     
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    должно сработать, ты же имя поменяешь

    mysql старая функция, надо MySQLi или PDO использовать.
    это лишние действия, ещё может вызвать предупреждения, notice, что не должно

    https://secure.php.net/manual/ru/features.file-upload.post-method.php
    https://secure.php.net/manual/ru/features.file-upload.errors.php
    можно было проверить $_FILES["file1"]["error"] например так if( isset( $_FILES["file1"] ) && $_FILES["file1"]["error"] == UPLOAD_ERR_OK )


    сделаешь два разных условия isset( $_FILES["file1"] ) и isset( $_FILES["jpg"] ) для одного в одну папку, для другого в другую
     
  7. leshiy

    leshiy Активный пользователь

    С нами с:
    18 июл 2008
    Сообщения:
    90
    Симпатии:
    0
    Дело все в том что тут используется js для отображения прогрессбара, а я в нем ничего не понимаю.По моему дело где тут
    Код (Javascript):
    1. function uploadFile(){
    2. var file = _("file1").files[0];
    3. var formdata = new FormData();
    4. formdata.append("file1", file);
    и загрузчику в файл "file_upload_parser.php" передается только один файл "file1" а мне нужно передать еще и второй.
    А без js просто в php это я и сам сделал бы.
     
  8. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    @leshiy, да, передается только один файл, потому что крепится только один. Попробуй использовать цикл в функуии uploadFile()
    --- Добавлено ---
    И еще, после редактирования клиентского кода, надо редактировать код обработчика сервера.
    Вот в докуменатции можно почитать, какие изменения нужно будет внести в код.
     
  9. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    может и js продублировать, то что внутри функции uploadFile(), только имена переменных поменять
     
  10. leshiy

    leshiy Активный пользователь

    С нами с:
    18 июл 2008
    Сообщения:
    90
    Симпатии:
    0
    А ты не мог бы показать как?
    --- Добавлено ---
    Да пробовал я и целиком js дублировать с измененным именем файла и частями не выходит.
     
  11. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    будет свободное время попробую, есть у нас ещё раздел "сделайте за меня", могу туда тему перенести