Передать файл из js в AJAX запросе

179
27 января 2019, 16:40

Есть input:

<div class="file-upload-link" id="sendWork" data-id="{{ $item->id }}">
   label>
     <input type="file" name="sworkfile" id="file">
     <span>Прикрепить файл</span>
   </label>
</div>

Как с помощью AJAX передать файл на сервер?

Пробовал так, но файл не найден:

$('.list-data .file-upload-link#sendWork #file').on('change', function (event, files, label) {
        var file_name = this.value.replace(/\\/g, '/').replace(/.*\//, '')
        var idwork = $(this).closest(".list-data #sendWork").attr("data-id");
        var token = $(this).closest(".list-data").find("input[type=hidden]").val();
        $.ajax({
            url: window.location.href+'/send-work',
            type: 'POST',
            data: {
                'idwork' : idwork,
                '_token' : token,
                'wfile' : file_name
            },
            success: function (data) {
                    alert(data);
            },
            error: function (jqXHR, text, error) {
                alert(error);
            }
        });
    });
Answer 1

Решил, если кому-то понадобиться

 $('.list-data .file-upload-link#sendWork #file').on('change', function (event, files, label) {
            var file_name = this.value.replace(/\\/g, '/').replace(/.*\//, '')
            var idwork = $(this).closest(".list-data #sendWork").attr("data-id");
            var token = $(this).closest(".list-data").find("input[type=hidden]").val();
            var file_data = $(this).prop('files')[0];
            var form_data = new FormData();
            form_data.append('wfile', file_data);
            form_data.append('_token', token);
            form_data.append('idwork', idwork);
            //alert(form_data);
            $.ajax({
                url: window.location.href+'/send-work',
                dataType: 'text',
                cache: false,
                contentType: false,
                processData: false,
                data: form_data,
                type: 'post',
                success: function (data) {
                        alert(data);
                },
                error: function (jqXHR, text, error) {
                    alert(error);
                }
            });
        });
READ ALSO
violentmonkey greasemonkey есть ли хранилище?

violentmonkey greasemonkey есть ли хранилище?

Скажите есть ли у этих расширений какое то общее хранилище? Я знаю есть localstore, но оно только в пределах страницы работает, я же делаю скрипт,...

161
цикл for JavaScript

цикл for JavaScript

Народ начал изучать JS, надо решить такую задачу:

190
Слайдер как у яндекса

Слайдер как у яндекса

помогите найти решение по слайдеру

149
Mysql 8.0 JSON индексация

Mysql 8.0 JSON индексация

Читал на хабре статью про mysql JSON, цитирую:

164