Avatar billede Slettet bruger
01. december 2005 - 12:42 Der er 48 kommentarer og
1 løsning

Flytte billder fra én mappe til en anden på en server

Jeg benytter nedenstående link til at overføre filer fra en mappe på min egen computer til en mappe på serveren.
Findes der en måde så jeg kun kan flytte billderne mellem 2 forud deffineret mapper på serveren?

void UploadFile(object sender, EventArgs e) {
    string TheFile = FileBox.PostedFile.FileName;
    if (TheFile.Length > 0) {
        string FileType = FileBox.PostedFile.ContentType;
        int FileSize = FileBox.PostedFile.ContentLength;
        if (FileType != "image/jpeg" & FileType != "image/pjpeg" & FileType != "image/gif" & FileType != "image/png") {
            lblError.Text = "Kun JPEG, GIF & PNG er brugbare billedeformater";
        }
        else if (FileSize > 200000) {
            lblError.Text += "Billeder over 2Mb kan ikke uploades.";
        }
        else {
            string filepath = Server.MapPath("") + "\\design\\";
            string filename = TheFile.Substring(TheFile.LastIndexOf("\\")+1);
            string fullpath = filepath + filename;
            try {
                FileBox.PostedFile.SaveAs(fullpath);
            }
            catch (Exception Exc) {
                lblError.Text += filename + "kunne ikke uploades" + Exc.ToString();
            }
        }
       
    }
    else {
        lblError.Text += "Vælg venligst en fil!";
    }

}
<form enctype="multipart/form-data" runat="server">
<input id="FileBox" type="file" runat="server">
<input name="button" type=button id="button3" value="Upload" onserverclick="UploadFile" runat="server">
<asp:Label ID="lblError" runat="server" />
</form>
Avatar billede dr_chaos Nybegynder
01. december 2005 - 13:36 #1
Avatar billede Slettet bruger
01. december 2005 - 16:24 #2
Det kunne det muligvis godt være - jeg bruger en "knap" til at execute scriptet "<asp:Button ID="Winter" OnClick="Main" Text="Vinter" runat="server" />" - men får en fejlmeddelse som siger at scriptet -->  indeholder ikke en diffination af "Main".

Har selvfølgelig prøvet at omdøbe "Main" til flere ting uden held.

Nogen forslag til hvordan jeg executer scriptet?
Avatar billede dr_chaos Nybegynder
02. december 2005 - 00:26 #3
vis mig noget kode.
Avatar billede Slettet bruger
02. december 2005 - 13:35 #4
C#]
using System;
using System.IO;

class Test
{
    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";
        string path2 = path + "temp";
        try
        {
            if (!File.Exists(path))
            {
                // This statement ensures that the file is created,
                // but the handle is not kept.
                using (FileStream fs = File.Create(path)) {}
            }

            // Ensure that the target does not exist.
            if (File.Exists(path2))   
            File.Delete(path2);

            // Move the file.
            File.Move(path, path2);
            Console.WriteLine("{0} was moved to {1}.", path, path2);

            // See if the original exists now.
            if (File.Exists(path))
            {
                Console.WriteLine("The original file still exists, which is unexpected.");
            }
            else
            {
                Console.WriteLine("The original file no longer exists, which is expected.");
            }           

        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}
Avatar billede dr_chaos Nybegynder
03. december 2005 - 09:22 #5
prøv lige at paste din codebehind fil og din aspx fil her ind.
Avatar billede Slettet bruger
04. december 2005 - 16:15 #6
<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="iso-8859-1" %>
using System
using System.IO
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<script runat="server">
class Test
{
    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";
        string path2 = path + "temp";

        try
        {
            // Create the file and clean up handles.
            using (FileStream fs = File.Create(path)) {}

            // Ensure that the target does not exist.
            File.Delete(path2);

            // Copy the file.
            File.Copy(path, path2);
            Console.WriteLine("{0} copied to {1}", path, path2);

            // Try to copy the same file again, which should succeed.
            File.Copy(path, path2, true);
            Console.WriteLine("The second Copy operation succeeded, which was expected.");
        }

        catch
        {
            Console.WriteLine("Double copy is not allowed, which was not expected.");
        }
    }
}
</script>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form runat="server">
<asp:Button ID="Winter" OnClick="Main" Text="Vinter" runat="server" />
</form>
</body>
</html>

Dette er hele scriptet...
Avatar billede dr_chaos Nybegynder
04. december 2005 - 18:34 #7
jeg laver lige et script til dig der virker imorgen.
Avatar billede Slettet bruger
05. december 2005 - 07:44 #8
Lyder godt - er lidt travlt ophængt pga. projekt...
Avatar billede dr_chaos Nybegynder
05. december 2005 - 08:16 #9
det her virker:
<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="iso-8859-1" %>
<%@ Import Namespace="System" %>
<%@ Import Namespace="System.IO" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<script runat="server">
    public void Main(object sender, EventArgs e)
    {
        string path = @"c:\temp\MyTest.txt";
        string path2 = path + "temp";

        try
        {
            // Create the file and clean up handles.
            using (FileStream fs = File.Create(path)) {}

            // Ensure that the target does not exist.
            File.Delete(path2);

            // Copy the file.
            File.Copy(path, path2);
          // Console.WriteLine("{0} copied to {1}", path, path2);

            // Try to copy the same file again, which should succeed.
            File.Copy(path, path2, true);
            //Console.WriteLine("The second Copy operation succeeded, which was expected.");
        }

        catch
        {
          // Console.WriteLine("Double copy is not allowed, which was not expected.");
        }
    }
</script>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form runat="server" ID="Form1">
<asp:Button ID="Winter" OnClick="Main" Text="Vinter" runat="server" />
</form>
</body>
</html>
Avatar billede Slettet bruger
05. december 2005 - 20:25 #10
public void Main(object sender, EventArgs e)
    {
        string path = @"c:\temp\MyTest.txt";<----HVOR HAVNER DENNE FIL HELT PRÆCIST?
        string path2 = path + "temp";

        try
Avatar billede dr_chaos Nybegynder
05. december 2005 - 20:31 #11
er den sti som bruges
c:\temp\mytest.txt
Avatar billede Slettet bruger
05. december 2005 - 22:49 #12
er den sti som bruges
c:\temp\mytest.txt  <---Jeg formoder at det er der fra filen hentes, men hvor sendes den hen?
Avatar billede dr_chaos Nybegynder
06. december 2005 - 07:57 #13
ret  string path2 = path + "temp";
til f.eks.
string path2 = @"c:\temp\CopyOfMyTest.txt";
så kopierer den filen til den sti du har angivet i path2
Avatar billede Slettet bruger
06. december 2005 - 17:23 #14
string path = @"c:\temp\MyTest.txt";
string path2 = @"c:\temp1\MyTest.txt";

Dette er hvad jeg bruger - Det er meningen at Mytest.txt skal kopieres i mappen temp og sættes ind i mappen temp1, men intet synes at ske... temp1 forbliver bare tom :-|
Avatar billede dr_chaos Nybegynder
06. december 2005 - 18:27 #15
og mappen c:\temp1 eksisterer ?
Avatar billede Slettet bruger
06. december 2005 - 20:34 #16
Yep! Side om side med c:\Temp
Avatar billede dr_chaos Nybegynder
06. december 2005 - 21:52 #17
prøv lige med denne her:
<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="iso-8859-1" %>
<%@ Import Namespace="System" %>
<%@ Import Namespace="System.IO" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<script runat="server">
    public void Main(object sender, EventArgs e)
    {
        string path = @"c:\temp\MyTest.txt";
        string path2 = @"c:\temp1\MyTest.txt";

        try
        {
            // Create the file and clean up handles.
            using (FileStream fs = File.Create(path)) {}

            // Ensure that the target does not exist.
            File.Delete(path2);

            // Copy the file.
            File.Copy(path, path2);
          // Console.WriteLine("{0} copied to {1}", path, path2);

            // Try to copy the same file again, which should succeed.
            File.Copy(path, path2, true);
            //Console.WriteLine("The second Copy operation succeeded, which was expected.");
        }

        catch(Exception ex)
        {
            System.Diagnostics.Debug.WriteLine(ex);
          // Console.WriteLine("Double copy is not allowed, which was not expected.");
        }
    }
</script>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form runat="server" ID="Form1">
<asp:Button ID="Winter" OnClick="Main" Text="Vinter" runat="server" />
</form>
</body>
</html>

tjek output vindue om der kommer nogen exceptions.
Avatar billede Slettet bruger
07. december 2005 - 07:46 #18
Stadig samme resultat! filen skifter ikke adresse...kan det tænkes at scriptet og mapperne skal ligge samme sted?
Avatar billede dr_chaos Nybegynder
07. december 2005 - 09:39 #19
prøv med

<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="iso-8859-1" %>
<%@ Import Namespace="System" %>
<%@ Import Namespace="System.IO" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<script runat="server">
    public void Main(object sender, EventArgs e)
    {
        string path = @"c:\temp\MyTest.txt";
        string path2 = @"c:\temp1\MyTest.txt";

        try
        {
            // Create the file and clean up handles.
            using (FileStream fs = File.Create(path)) {}

            // Ensure that the target does not exist.
            File.Delete(path2);

            // Copy the file.
            File.Copy(path, path2);
          // Console.WriteLine("{0} copied to {1}", path, path2);

            // Try to copy the same file again, which should succeed.
            File.Copy(path, path2, true);
            //Console.WriteLine("The second Copy operation succeeded, which was expected.");
        }

        catch(Exception ex)
        {
          lblfejl.Text = ex.ToString();
          // Console.WriteLine("Double copy is not allowed, which was not expected.");
        }
    }
</script>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form runat="server" ID="Form1">
<asp:Button ID="Winter" OnClick="Main" Text="Vinter" runat="server" />
<asp:label id="lblfejl" runat="server"></asp:label>
</form>
</body>
</html>
Avatar billede dr_chaos Nybegynder
07. december 2005 - 09:39 #20
hvis der opstår en fejl skal du meget gerne få vist den på selve siden.
Avatar billede Slettet bruger
07. december 2005 - 21:00 #21
Yep! Fejl opstod:
System.UnauthorizedAccessException: Adgang til stien "c:\temp\MyTest.txt" blev nægtet. at System.IO.__Error.WinIOError(Int32 errorCode, String str) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean useAsync, String msgPath, Boolean bFromProxy) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize) at ASP.movefile_aspx.Main(Object sender, EventArgs e)

Jeg prøvede at dele mapperne men det gjorde ingen forskel. Kan det være stien der skal ændres?
Avatar billede dr_chaos Nybegynder
07. december 2005 - 21:05 #22
du skal give skrive rettigheder til aspnet brugeren på begge mapper.
Avatar billede dr_chaos Nybegynder
07. december 2005 - 21:05 #23
eller aspnet brugeren skal faktisk have fuld kontrol
Avatar billede Slettet bruger
07. december 2005 - 21:16 #24
Yes! Nu virker det! Så er mit næste spørgsmål. Kan man flytte flere filer af forskellige formater på én gang?
Såsom: .jpg .gif og .swf

string path = @"c:\temp\MyTest.txt,MyTest1.txt,MyTest2.txt";
string path2 = @"c:\temp1\MyTest.txt,MyTest1.txt,MyTest2.txt";
Dette eksperiment en fil i begge mapper kaldet MyTest.txt,MyTest1.txt,MyTest2.txt
Avatar billede dr_chaos Nybegynder
07. december 2005 - 21:46 #25
du kan bruge noget i denne stil:

  string path = @"c:\temp\";
        string path1 = @"c:\temp1\";
        foreach (string f in Directory.GetFiles(path))
        {
            if (f.EndsWith(".jpg") || f.EndsWith(".gif") || f.EndsWith(".swf"))
            {
                File.Copy(path + f, path1 + f);
            }
        }
Avatar billede Slettet bruger
07. december 2005 - 22:37 #26
Nu ser scriptet således ud:

<script runat="server">
    public void Main(object sender, EventArgs e)
    {
        string path = @"c:\temp\";
        string path1 = @"c:\temp1\";
        foreach (string f in Directory.GetFiles(path))
        {
            if (f.EndsWith("header.jpg") || f.EndsWith("tekstboks.gif") || f.EndsWith("menu.swf"))
            {
                File.Copy(path + f, path1 + f);
            }
        }

        try
        {
            // Create the file and clean up handles.
            using (FileStream fs = File.Create(path)) {}

            // Ensure that the target does not exist.
            File.Delete(path1);

            // Copy the file.
            File.Copy(path, path1);
          // Console.WriteLine("{0} copied to {1}", path, path2);

            // Try to copy the same file again, which should succeed.
            File.Copy(path, path1, true);
            //Console.WriteLine("The second Copy operation succeeded, which was expected.");
        }

        catch(Exception ex)
        {
          lblfejl.Text = ex.ToString();
          // Console.WriteLine("Double copy is not allowed, which was not expected.");
        }
    }
</script>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form runat="server" ID="Form1">
<asp:Button ID="Winter" OnClick="Main" Text="Vinter" runat="server" />
<asp:label id="lblfejl" runat="server"></asp:label>
</form>
</body>
</html>

Så får jeg denne fejlmeddelse: Detaljer om undtagelse: System.NotSupportedException: Den angivne stis format understøttes ikke.

Den highlighter linie 14 som problemets rod.
Avatar billede dr_chaos Nybegynder
07. december 2005 - 23:29 #27
brug det her.
<script runat="server">
    public void Main(object sender, EventArgs e)
    {
        string path = @"c:\temp\";
        string path1 = @"c:\temp1\";
        foreach (string f in Directory.GetFiles(path))
        {
            if (f.EndsWith("header.jpg") || f.EndsWith("tekstboks.gif") || f.EndsWith("menu.swf"))
            {
                File.Copy(path + f, path1 + f);
            }
        }

        /*try
        {
            // Create the file and clean up handles.
            using (FileStream fs = File.Create(path)) {}

            // Ensure that the target does not exist.
            File.Delete(path1);

            // Copy the file.
            File.Copy(path, path1);
          // Console.WriteLine("{0} copied to {1}", path, path2);

            // Try to copy the same file again, which should succeed.
            File.Copy(path, path1, true);
            //Console.WriteLine("The second Copy operation succeeded, which was expected.");
        }

        catch(Exception ex)
        {
          lblfejl.Text = ex.ToString();
          // Console.WriteLine("Double copy is not allowed, which was not expected.");
        }*/
    }
</script>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form runat="server" ID="Form1">
<asp:Button ID="Winter" OnClick="Main" Text="Vinter" runat="server" />
<asp:label id="lblfejl" runat="server"></asp:label>
</form>
</body>
</html>
Avatar billede Slettet bruger
08. december 2005 - 07:46 #28
Får samme fejl --> System.NotSupportedException: Den angivne stis format understøttes ikke.
Avatar billede dr_chaos Nybegynder
08. december 2005 - 09:31 #29
prøv at fjerne denne del:
    /*try
        {
            // Create the file and clean up handles.
            using (FileStream fs = File.Create(path)) {}

            // Ensure that the target does not exist.
            File.Delete(path1);

            // Copy the file.
            File.Copy(path, path1);
          // Console.WriteLine("{0} copied to {1}", path, path2);

            // Try to copy the same file again, which should succeed.
            File.Copy(path, path1, true);
            //Console.WriteLine("The second Copy operation succeeded, which was expected.");
        }

        catch(Exception ex)
        {
          lblfejl.Text = ex.ToString();
          // Console.WriteLine("Double copy is not allowed, which was not expected.");
        }*/
Avatar billede Slettet bruger
08. december 2005 - 15:04 #30
Stadig samme fejl --> System.NotSupportedException: Den angivne stis format understøttes ikke  :-|
Avatar billede dr_chaos Nybegynder
08. december 2005 - 15:10 #31
i hvilke linie får du fejlen ?
Avatar billede dr_chaos Nybegynder
08. december 2005 - 15:29 #32
fandt fejlen:
prøv med

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<script runat="server">
    public void Main(object sender, EventArgs e)
    {
        string path = @"c:\temp\";
        string path1 = @"c:\temp1\";
        foreach (string f in Directory.GetFiles(path))
        {
            if (f.EndsWith("header.jpg") || f.EndsWith("tekstboks.gif") || f.EndsWith("menu.swf"))
            {
                string tmp = f.Remove(0, f.LastIndexOf('\\') + 1);
                File.Copy(path + tmp, path1 + tmp, true);
            }
        }

    }
</script>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form runat="server" ID="Form1">
<asp:Button ID="Winter" OnClick="Main" Text="Vinter" runat="server" />
<asp:label id="lblfejl" runat="server"></asp:label>
</form>
</body>
</html>
Avatar billede Slettet bruger
08. december 2005 - 21:26 #33
NU virker den, MEN hvad skriver jeg i stien hvis jeg ønsker at benytte to mapper der ligger i samme mappe som scriptet. Jeg har prøvet mig lidt frem og tilbage men den kan ikke finde stien. Den siger:

System.IO.DirectoryNotFoundException: En del af stien "..\efteraar\" blev ikke fundet.


string path = @"..\efteraar\";
string path1 = @"..\design\";
foreach (string f in Directory.GetFiles(path))<-- highlighter denne linie som- 
                                                  problemets kilde...

Jeg har selvfølgelig også prøvet uden et relavtivt link.
Avatar billede dr_chaos Nybegynder
08. december 2005 - 21:58 #34
prøv med
string path = server.mappath("/efteraar");
string path1 = server.mappath("/design");
Avatar billede Slettet bruger
09. december 2005 - 07:51 #35
System.IO.DirectoryNotFoundException: En del af stien "c:\inetpub\wwwroot\efteraar" blev ikke fundet. <-- Giver denne fejl

Linje 8:      string path = Server.MapPath("/efteraar");
Linje 9:      string path1 = Server.MapPath("/design");
Linje 10:    foreach (string f in Directory.GetFiles(path))<-- Fejlen ligger her
Linje 11:      {
Linje 12:            if (f.EndsWith("index_01.jpg") || f.EndsWith("index_06.gif")  || f.EndsWith("menu.swf"))
Avatar billede dr_chaos Nybegynder
09. december 2005 - 08:57 #36
hvor har du /efteraar og /design liggende?
altså stien.
og hvor ligger din side.
Avatar billede Slettet bruger
09. december 2005 - 14:42 #37
Det hele: efteraar og design samt scriptet ligger i en undermapper på min LocalHost. Det er meningen at al indhold i den mappe skal uploades på mit webhotel når projektet er færdigt.
Avatar billede dr_chaos Nybegynder
13. december 2005 - 10:32 #38
hvad hedder undermappen ?
Avatar billede Slettet bruger
14. december 2005 - 20:15 #39
wwwroot
Avatar billede dr_chaos Nybegynder
15. december 2005 - 06:35 #40
så burde stien c:\inetpub\wwwroot\efteraar også eksistere.
Avatar billede Slettet bruger
15. december 2005 - 09:39 #41
Ude på serveren hedder mappen også wwwroot - i den ligger alle scripts + billeder
Avatar billede dr_chaos Nybegynder
15. december 2005 - 09:43 #42
I din kommentar 09/12-2005 07:51:13
fik du fejlen på din lokalmaskine ?
Avatar billede Slettet bruger
15. december 2005 - 20:15 #43
Ja - det var under testen på min egen maskine (Localhost)
Avatar billede dr_chaos Nybegynder
15. december 2005 - 20:31 #44
hvad er så den absolute sti til din wwwroot mappe og efteraar mappen ?
altså noget med c:\etellerandet\wwwroot osv.
Avatar billede Slettet bruger
15. december 2005 - 23:34 #45
Jo! men denne sti c:\etellerandet\wwwroot osv kan jeg jo ikke bruge ude på serveren. Der er der jo ikke noget der hedder c:
Avatar billede Slettet bruger
16. december 2005 - 00:08 #46
Ok fandt ud af det ved et tilfælde:
i stedet for

string path = server.mappath("/efteraar");
string path1 = server.mappath("/design");

skal det være

string path = server.mappath("efteraar/");
string path1 = server.mappath("design/");

DUH!!
;-)
Avatar billede dr_chaos Nybegynder
16. december 2005 - 11:55 #47
hehe :)
virker alt som det skal nu ?
Avatar billede Slettet bruger
16. december 2005 - 18:52 #48
Alt virker 100% som jeg havde tænkt mig... tak for det!
Avatar billede dr_chaos Nybegynder
16. december 2005 - 23:58 #49
tillader mig lige at smide et svar :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester