1

私は自分のウェブサイトで「jquery.uploadify.js」を使用しています。このjqueryは、画像をフォルダにアップロードするためにashxファイルを使用しています。.ashx では、画像の名前を保存するために Session["FileNameNews"] を使用しており、コードの先頭で Session["FileNameNews"] を空にしています。しかし、2 つ、3 つ、または ... 画像をアップロードするたびに、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