Javascript multipart send data

Discussion in 'PHP' started by TotalSX, 22 Jun 2015.

  1. TotalSX

    TotalSX New Member

    Joined:
    20 Jun 2015
    Messages:
    14
    Likes Received:
    0
    Reputations:
    0
    Есть javascript код, сорри яву не знаю поэтому точно не уверен что начало закопипастил правильно:


    Есть javascript код, сорри яву не знаю поэтому точно не уверен что начало закопипастил правильно:


    $('#nmForm img').each(function(){
    var $th = $(this);
    if($th.siblings('a.show-upload-form').length==0) {
    $th.after($('<a/>', {
    text: "загрузить",
    class: "show-upload-form",
    "href": "#",
    "onclick": "showUploadForm($(this));return false;"
    }));
    }
    });





    и еще функции:




    function showUploadForm(th){
    var $form = $('<form/>',{class:"file","method":"post","enctype":"multipart/form-data"})
    .append($('<input/>',{"type":"file",class:"files","name":"file[]"}))
    .append($('<input/>',{"type":"submit","value":"Загрузить","onclick":"uploadFile($(this));return false;"}))
    .append($('<a/>',{"href":"#",class:"closeUploadForm","onclick":"closeUploadForm($(this));return false;"}).html("&times;"));
    th.after($('<div/>',{class:"upBlock"}).html($form));
    th.hide();
    }

    function closeUploadForm(th) {
    var p = th.parent().parent();
    p.siblings('a').show();
    p.hide();
    }

    function uploadFile(th) {
    var $th = th;
    var data = new FormData();
    $.each($th.siblings('.files')[0].files, function(i, file) {
    data.append('file', file);
    });
    $.ajax({
    contentType: false,
    method: "POST",
    cache: false,
    processData: false,
    url: "file.php",
    data: data
    }).done(function(d) {
    if(d.error!='') {
    $th.after($('<span/>',{class:'error',text: d.error}).fadeIn().delay(5000).fadeOut());
    } else {
    var parent = $th.closest("td");
    parent.find('a').show();
    parent.find('img').attr({"src": '/upload/' + d.file});
    parent.find('.upBlock').remove();
    }
    });
    }




    И мой вопрос, как эту javascript отправку файла, переделать под html форму отправки? У меня не получилось, помогите
     
  2. off

    off Banned

    Joined:
    21 Aug 2006
    Messages:
    55
    Likes Received:
    37
    Reputations:
    6
    а что конкретно не получилось ? Где ваша html форма ?
     
  3. TotalSX

    TotalSX New Member

    Joined:
    20 Jun 2015
    Messages:
    14
    Likes Received:
    0
    Reputations:
    0
    <form action="file.php" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" value="Upload" name="submit">
    </form>

    Сервер не хочет принимать, говорит пустой файл.

    Ну как реализовать именно html форму отправки исходя из java script?
     
  4. off

    off Banned

    Joined:
    21 Aug 2006
    Messages:
    55
    Likes Received:
    37
    Reputations:
    6
    Вообще для такого дела не плохо помогают утилиты типа Postman (расширение для Chrome), там можно быстро отладить запросы поиграться с заголовками и типами запросов ;)

    По ссылке автора, без проблем заливается файл методом POST и правильным contentType.

    Ответ сервера:
    {
    "error": "",
    "file": "1435048811.png"
    }

    Рабочий код

    <!DOCTYPE HTML>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Тег FORM, атрибут enctype</title>
    </head>
    <body>
    <form action="file.php" enctype="multipart/form-data" method="post">
    <p>Загрузите файл с картинкой</p>
    <p><input type="file" name="file"></p>
    <p><input type="submit" value="Залить"></p>
    </form>
    </body>
    </html>

    В чем может быть проблема как и изначально не понятно :)
     
    #4 off, 23 Jun 2015
    Last edited: 23 Jun 2015
    TotalSX likes this.
  5. TotalSX

    TotalSX New Member

    Joined:
    20 Jun 2015
    Messages:
    14
    Likes Received:
    0
    Reputations:
    0
    Problema reshena