webForumDet fria alternativet

Hitta och skapa kataloger?

.NET

7 svar · 289 visningar · startad av asmodie

Medlem sedan jan. 2004501 inlägg
Frågan#1

Hur kollar ja om en katalog finns och hur skapar jag en katalog?

Och hur kollar jag om en fil redan finns?

Medlem sedan sep. 20011 914 inlägg
#2
Directory.Exists(path)
Directory.CreateDirectory(path)
File.Exists(path)
Medlem sedan jan. 2004501 inlägg
#3

En annan grej...om jag vill nu ha en path som ligger i tex
rooten/filer och den ska hitta dit oavsätt vart isiten jag ligger? Hur fixar jag det?

Medlem sedan apr. 20012 266 inlägg
#4

Server.MapPath kan vara till hjälp.

Medlem sedan sep. 20011 914 inlägg
#5

red//renholm var lite före :)

Medlem sedan jan. 2004501 inlägg
#6

Hmz. Ett problem. När jag börjar upploada mitt min kollar jag så att det inte finns en fil med samma namn. Finns det det vill jag slänga upp en ruta som frågar om man vill byta ut filen? Trycker man yes så gör den en grej och trycker man no så gör den en annan.

Medlem sedan sep. 20011 914 inlägg
#7
//.aspx

<form runat="server">
   <input id="fileTest" type="file" runat="server" />
   <input type="hidden" id="tbOkFile" value="0" runat="server" />
   <asp:button id="btSend" text="Send" commandargument="3" runat="server" />
</form>
//.aspx.cs

public class DinPageClass : System.Web.UI.Page
{
   protected Button btSend;
   protected System.Web.UI.HtmlControls.HtmlInputFile fileTest;
   protected System.Web.UI.HtmlControls.HtmlInputHidden tbOkFile;

   private void Page_Load(object sender, System.EventArgs e){}

   private void btSend_Click(object sender, System.EventArgs e)
   {
      switch(tbOkFile.Value)
      {
         case "0" :
            HttpPostedFile pf = fileTest.PostedFile;
            string fileName = Path.GetFileName(pf.FileName);
            string realpath = string.Format("RealFolder/{0}", fileName);
            string temppath = string.Format("TempFolder/{0}", fileName);
                    
            if(File.Exists(Server.MapPath(realpath)))
            {
               pf.SaveAs(Server.MapPath(temppath));
               Page.RegisterStartupScript("confrim", ScriptConfirm(fileName));
               ViewState["fileName"] = fileName;
               return;
            }
            pf.SaveAs(Server.MapPath(realpath));
            break;
         case "1" :
            string fileName1 = Path.GetFileName(ViewState["fileName"].ToString());
            string realpath1 = string.Format("RealFolder/{0}", fileName1);
            string temppath1 = string.Format("TempFolder/{0}", fileName1);
            File.Delete(Server.MapPath(realpath1));
            File.Move(Server.MapPath(temppath1), Server.MapPath(realpath1));
            tbOkFile.Value = "0";
            break;
         default : 
            string fileName2 = Path.GetFileName(ViewState["fileName"].ToString());
            string temppath2 = string.Format("TempFolder/{0}", fileName2);
            File.Delete(Server.MapPath(temppath2));
            tbOkFile.Value = "0";
            break;
      }
   }

   private string ScriptConfirm(string fileName)
   {
      System.Text.StringBuilder sb = new System.Text.StringBuilder();
      sb.Append("<script language=\"javascript\">\r<!--\r");
      sb.Append("if(confirm(\"There are already a file named ");
      sb.Append(fileName);
      sb.Append(". Do you want to change it?\")){\r");
      sb.Append("document.getElementById('tbOkFile').value = '1';\r");
      sb.Append("}\r");
      sb.Append("else{\r");
      sb.Append("document.getElementById('tbOkFile').value = '-1';\r");
      sb.Append("}\r");
      sb.Append("document.getElementById('btSend').click();\r");
      sb.Append("// -->\r</script>");
      return sb.ToString();
   }
}

Vad som händer är att när en fil laddas upp så kollas det om den finns, om så, så sparas den till mappen där de filerna skall vara. Om filen redan finns så läggs den istället i en temporär mapp, filnamnet läggs i viewstaten och ett script skapas. Sidan laddas på nytt, men direkt kommer det upp en confirm ruta med Ja eller Nej alternativ. Vad man än väljer så görs en ny postback. Om man inte ville skriva över den gamla filen så tas den bort. Om man ville skriva över den så tas den befintliga filen bort och ersätts med den nya.

Koden kan förfinas lite. :)

Medlem sedan jan. 2004501 inlägg
#8

Ett problem med koden som jag ser det är att man måste uploada hela filen innan. Onödigt lång tid om man råkat välja fel fil.

259 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)