簡體   English   中英

使用 C# 和 JavaScript 將 XLSX 文件發送到 controller

[英]Send XLSX file to controller with C# and JavaScript

我需要發送一個XLSX文件和一個HTML文件到Controller但我不知道Model的文件類型是什么(字符串,我可以通過這些文件嗎?

我的 HTML 看起來像這樣:

                <div class="flex flex-column">
                    <!--Para inserir o titulo do email-->
                    <h6>Titulo:</h6>
                    <input id="titulo" type="text" placeholder="Titulo do Email" style="margin: 0 !important; width: 280px;" />
                </div>
                <div class="flex flex-column">
                    <!--Para inserir o corpo do email-->
                    <h6>Anexar corpo do email:</h6>
                    <input type="file" id="corpo" />
                </div>
                <div class="flex flex-column">
                    <!--Para parametro e os emails-->
                    <h6>Importar planilha de e-mails:</h6>
                    <input type="file" id="parametros" />
                </div>
            </div>
            <div class="button-space">
                <input class="btn btn-primary" type="button" value="Preparar e-mails" onclick="CarregarDados()" />
            </div>

JavaScript:

    function EnviarEmail() {
        const data = {
            Titulo: document.getElementById("titulo").value,
            Corpo: document.getElementById("corpo").value,
            Parametros: document.getElementById("parametros").value
        };
    
        console.log(data);
        //POST request with body equal on data in JSON format
        fetch('/DisparoEmail/EnviaEmail', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
            },
            body: JSON.stringify(data),
        })
        .then((response) => response.arrayBuffer())
        //Then with the data from the response in JSON...
        .then((buffer) => {
    
            const decoder = new TextDecoder('iso-8859-1');
            const text = decoder.decode(buffer);
    
    
            //document.querySelector("#divListaFila").innerHTML = text;
        })
        //Then with the error genereted...
        .catch((error) => {
            console.error('Error:', error);
        });

}

型號:

public class DisparoEmailViewModel
{
    public string Titulo { get; set; }
    public string Corpo { get; set; }
    public string Parametros { get; set; }
    List<Parametro1> Parametro1s { get; set; }
    List<Parametro2> Parametro2s { get; set; }

}

和 Controller:

public bool EnviaEmail(DisparoEmailViewModel email = null)
{
    if(email != null)
    {
        DisparoEmailExtension teste = new DisparoEmailExtension();
        teste.EnviaEmail(email);
        return true;
    }
    return false;
}

您應該使用HttpPostedFileBase來處理文件上傳(請參閱此鏈接)。

此外,如果您需要支持多個文件,您可以使用<input type='file' multiple> (請參閱此鏈接)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM