代码之家  ›  专栏  ›  技术社区  ›  François

使用Ajax编码问题将文件从html输入发送到WebApi

  •  0
  • François  · 技术社区  · 8 年前

    我有一个 input type="file" 以及一个使用Ajax将文件发送到Webapi端点的函数。

    $('#myInput').change(function () {
        if (this.files[0] === undefined) return;
        sendToWebapi(this.files[0]);
        this.value = null;
    });
    
    function sendToWebapi(file) {
        const data = new FormData();
        data.append('file', file);
        $.ajax({
            url: "myWebApiPath",
            contentType: "text/csv",
            processData: false,
            method: "POST",
            data: data
        });
    }
    

    我的问题是,法语字符在发送到WebApi时没有正确编码。请参阅以下请求正文摘录:

    > ------WebKitFormBoundaryggBmtBMylhc9eoIE
    Content-Disposition: form-data; name="file"; filename="myfile.csv"
    Content-Type: application/vnd.ms-excel
    
    Date;Pi�ce;Journal;Libell�;D�bit;Lettrage;Cr�dit;Solde
    ....
    
    1 回复  |  直到 8 年前
        1
  •  0
  •   Oscar    8 年前

    尝试显式设置字符集:

    function sendToWebapi(file) {
        const data = new FormData();
        data.append('file', file);
        $.ajax({
            url: "myWebApiPath",
            contentType: "text/csv;charset=ISO-8859-1",
            processData: false,
            method: "POST",
            data: data
        });
    }