Передача файла Excel на сервер с помощью AJAX Post - PullRequest
0 голосов
/ 17 марта 2020

Я просто хочу иметь возможность использовать html Тип ввода = "файл", чтобы выбрать файл Excel

<input type="file" id="UploadedFile" name="UploadedFile" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet">

, а затем передать этот выбранный файл обратно на сервер - предпочтительно используя AJAX post:

    var serviceURL = appRoot + 'Register/ImportTasks'

    $j.ajax({
        type: "post",
        url: serviceURL,
        data: (??? Not sure how to present here ???),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: successFunc,
        error: errorFunc
    });

В частности, я не вижу, как я представляю «файл» в вызове AJAX как данные.

    public void ImportTasks(DataType?? uploadedExcelFile)
    {
        ..... Doing stuff ...
    }

И затем я не уверен относительно того, какой тип данных параметра Затем я должен сказать методу ожидать, когда он будет вызван?

1 Ответ

1 голос
/ 17 марта 2020

Вот базовый пример c. Вы должны использовать FormData

     var formData = new FormData();
     var uploadFiles = document.getElementById('js-upload-files').files;
     this.formData.append("MyKey", uploadFiles[0]);

    $.ajax({
        type: "POST",
        url: 'Controller/Upload',
        data: formData,
        dataType: 'json',
        contentType: false,
        processData: false,
        complete: this.onComplete.bind(this)
    });

Редактировать

Забыли код контроллера

    [HttpPost]
    public virtual BetterJsonResult Upload()
    {

        foreach (var fileKey in Request.Files)
        {
            ...Request.Files[fileKey.ToString()] //access it like this
        }

    }
...