1

我在我的网站中使用“jquery.uploadify.js”,这个 jquery 使用 ashx 文件将图像上传到文件夹中。在 .ashx 中,我使用 Session["FileNameNews"] 来保存图像名称,并且在我的代码开头我的 Session["FileNameNews"] 是空的。但是当我上传两个或三个或...图像时,每次我的 Session["FileNameNews"] 都是空的。我不想每次上传照片时都清空我的会话,我希望上传的图像显示在父 .aspx 页面的列表框中。其他方式,我需要在上传开始时将会话清空,并在上传结束时填写图像名称。我可以一次上传多张图片。

有人有想法吗?请帮我。

谢谢你。

.aspx 页面:

<script type = "text/javascript">
    $(window).load(
        function() {
            $("#<%=FileUpload1.ClientID%>").fileUpload({
            'uploader': 'scripts/uploader.swf',
            'cancelImg': 'images/cancel.png',
            'buttonText': 'Browse Files',
            'script': 'Upload.ashx',
            'folder': 'Temp',
            'fileDesc': 'Image Files',
            'fileExt': '*.jpg;*.jpeg;*.gif;*.png',
            'multi': true,
            'auto': false
        });
       }
    );
    </script>


<a href="javascript:$('#<%=FileUpload1.ClientID%>').fileUploadStart()">Start Upload</a> 
|<a href="javascript:$('#<%=FileUpload1.ClientID%>').fileUploadClearQueue()">Clear</a> 
<div style = "padding:40px">
  <asp:FileUpload ID="FileUpload1" runat="server" />
</div> 

和 Upload.ashx:

public class Upload : IHttpHandler, IRequiresSessionState {

public void ProcessRequest(HttpContext context)
{
    context.Session["FileNameNews"] = "";
    context.Response.ContentType = "text/plain";
    context.Response.Expires = -1;
    try
    {
        HttpPostedFile postedFile = context.Request.Files["Filedata"];

        string savepath = "";
        string tempPath = "";
        tempPath = "Temp";//System.Configuration.ConfigurationManager.AppSettings["FolderPath"]; 
        savepath = context.Server.MapPath(tempPath);
        string filename = postedFile.FileName;
        if (!Directory.Exists(savepath))
            Directory.CreateDirectory(savepath);

        string SitePath = context.Server.MapPath(context.Request.ApplicationPath) + @"\Temp\";
        string SitePath1 = context.Server.MapPath(context.Request.ApplicationPath) + @"\WebImages\NewsImages\";
        string FileN = SitePath + filename + "{---}" + context.Session["UserID"].ToString();
        if ((File.Exists(SitePath + filename + "{---}" + context.Session["UserID"])) || (File.Exists(SitePath1 + filename)))
        {
            return;
        }
        else
        {
            postedFile.SaveAs(savepath + @"\" + filename);
            postedFile.SaveAs(savepath + @"\" + filename + "{---}" + context.Session["UserID"]);
            if (context.Session["FileNameNews"] == "") { context.Session["FileNameNews"] = filename; }
            else { context.Session["FileNameNews"] = context.Session["FileNameNews"] + "," + filename; }
            context.Response.Write(tempPath + "/" + filename);
            context.Response.StatusCode = 200;
        }
    }
    catch (Exception ex)
    {
        context.Response.Write("Error: " + ex.Message);
    }
}

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

1 回答 1

1

如果此 ashx 处理程序是您的文件上传 ajax 请求的端点,并且您抛出异常,您将永远不会看到来自 try / catch 的错误消息。您可能会“吞下”您的异常。删除 try / catch 并使用浏览器中的调试工具检查结果状态(或错误消息)。

于 2013-04-24T15:59:12.847 回答