Directory.Exists(path)
Directory.CreateDirectory(path)
File.Exists(path)
Hur kollar ja om en katalog finns och hur skapar jag en katalog?
Och hur kollar jag om en fil redan finns?
7 svar · 289 visningar · startad av asmodie
Hur kollar ja om en katalog finns och hur skapar jag en katalog?
Och hur kollar jag om en fil redan finns?
Directory.Exists(path)
Directory.CreateDirectory(path)
File.Exists(path)
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?
Server.MapPath kan vara till hjälp.
red//renholm var lite före :)
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.
//.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. :)
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.