簡體   English   中英

如何在asp.net中使用ajax調用上傳文件?

[英]How to Upload Files using ajax call in asp.net?

我創建了一個小的asp.net Web表單應用程序來管理電子郵件,我創建了一個小界面,其中包含發送電子郵件的必填信息,例如從,到,主題等。現在我想將文件附加到電子郵件中,使用asp.net文件上傳控制器上傳文件,並且必須附加多個文件,

接口

現在,我想將此詳細信息發送到后面的代碼中,所以我認為最好的方法是使用ajax調用,因為我不想刷新頁面,但是我不知道如何將附件發送到在服務器端,我讀了一些文章,他們說我必須使用FormData發送文件,然后創建了一個FormData對象,並將所有附加文件附加到該對象。但是如何將該對象傳遞給服務器端,我js代碼如下

function sendEmail() {

    var data = new FormData();
    var files = $('.attachment');
    $.each(files, function (key, value) {
        var file = $(value).data('file');
        data.append(file.name, file);
    });

    $.ajax({
        url: "OpenJobs.aspx/sendEmail",
        type: "POST",
        async: false,
        contentType: false, // Not to set any content header  
        processData: false, // Not to process data  
        data: null,
        success: function (result) {
            alert(result);
        },
        error: function (err) {
            alert(err.statusText);
        }
    });

}

有什么幫助嗎?

您需要使用通用處理程序來使用ajax上傳文件,請嘗試以下代碼:

function sendEmail() {

var formData = new FormData();
var files = $('.attachment');
$.each(files, function (key, value) {
    var file = $(value).data('file');
    formData.append(file.name, file);
});

$.ajax({
    url: "FileUploadHandler.ashx",
    type: "POST",
    contentType: false, // Not to set any content header  
    processData: false, // Not to process data  
    data: formData,
    success: function (result) {
        alert(result);
    },
    error: function (err) {
        alert(err.statusText);
    }
});
}

通用處理程序

<%@ WebHandler Language="C#" Class="FileUploadHandler" %>    

using System;    
using System.Web;    

public class FileUploadHandler : IHttpHandler  
{    

public void ProcessRequest (HttpContext context)  
{    
    if (context.Request.Files.Count > 0)    
    {    
        HttpFileCollection files = context.Request.Files;    
        for (int i = 0; i < files.Count; i++)    
        {    
            HttpPostedFile file = files[i];    
            string fname = context.Server.MapPath("~/uploads/" + file.FileName);    
            file.SaveAs(fname);    
        }    
        context.Response.ContentType = "text/plain";      
    }    

}      
}   

暫無
暫無

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

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