使用AJAX上传附件

<input type="button" value="上传" onclick="up()" />
<form name="uploadForm" id="uploadForm">
    <input type="file" multiple="multiple" id="upFile" name="upFile" style="display: none;" />
</form>
function up() {
    $('#upFile').val('');
    $('#upFile').click();
}
$(function () {
    $(document).on("change", "#upFile", function (e) {
        var val = $('#upFile').val();
        if (val) {
            $.ajax({
                url: '<%= ResolveUrl("~/AttchUpload.ashx") %>',
                type: 'POST',
                cache: false,
                data: new FormData($('#uploadForm')[0]),
                processData: false,
                contentType: false,
                async: false,
                success: function (result) {
                    alert('上传成功!')
                },
                error: function (json) {
                    alert("上传失败!请网络状况。")
                }
            });
        }
    })
});
public class AttchUpload : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        // 获取从MIME中读取出来的文件
        HttpFileCollection ListFile = context.Request.Files;
        try
        {
            for (int n = 0; n < ListFile.Count; n++)
            {
                HttpPostedFile i = ListFile[n];
                if (!string.IsNullOrEmpty(i.FileName))
                {
                    string FileName = Path.GetFileName(i.FileName);
                    string FileNameNotExtension = Path.GetFileNameWithoutExtension(i.FileName);
                    string FileExtensionName = Path.GetExtension(i.FileName);
                    Stream inStream = null;
                    Stream fmpStream = null;
                    try
                    {
                        inStream = Topevery.Framework.CommonModel.Utility.StaticFunction.StreamToMemoryStream(i.InputStream);
                        Guid id = Guid.NewGuid();
                        fmpStream = Topevery.FMP.ObjectModel.FileManager.CreateFile(id, FileName);
                        Topevery.Framework.CommonModel.Utility.StaticFunction.StreamSourceStreamToTargetStream(inStream, fmpStream);
                        context.Response.Write(id.ToString());
                    }
                    catch (Exception ex)
                    {
                        LogHelper.Error("FMP错误", ex);
                        throw ex;
                    }
                    finally
                    {
                        if (inStream != null)
                        {
                            inStream.Close();
                            inStream.Dispose();
                        }
                        if (fmpStream != null)
                        {
                            fmpStream.Close();
                            fmpStream.Dispose();
                        }
                    }
                }
            }
        }
        catch (Exception ex)
        {
            LogHelper.Error("上传附件错误", ex);
            throw ex;
        }
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_32109957/article/details/86688605
今日推荐