Avatar billede mema Nybegynder
17. marts 2006 - 11:54 Der er 7 kommentarer og
1 løsning

Hvorfor upload koden skriver ikke filnavnet i Access-databasen

Jeg har en kode, der uploader filerne til en mappe på serveren. Den virker fint bortset fra at den ikke omdøber filnavnet ved at tilføje datoen til filnavnet. Men når den skal også skrive navnet i en Access database virker den ikke. Her er min kode:

<%@ import namespace="System.Data.OleDb" %>
<%@ Import Namespace="System.IO" %>
<%@ Page Language="C#" %>
<HTML>
<script runat="server">
private void myUploadCode(Object sender, EventArgs e)
{
    string strFileName;

    if(upload_file.PostedFile.FileName.IndexOf("\\") > 0)
    {
    strFileName = upload_file.PostedFile.FileName.Substring(upload_file.PostedFile.FileName.LastIndexOf("\\") + 1);                                             
    }
    else
    {
        // jeg ved ikke hvad det her gør godt for... måske gør du :o)
        strFileName = "ukendt fil";
    }
    strFileName = DateTime.Now.ToString("yyyy-MM-dd-HHmmss")+"-"+strFileName;
            if(!File.Exists(Server.MapPath("uploading/" + strFileName)))
            {
                try
                {   
                    upload_file.PostedFile.SaveAs(Server.MapPath("uploading/" + strFileName));

                    OleDbConnection con = new OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Server.MapPath(fpdb/stillingsopslag.mdb/)");
                    con.Open();
                    OleDbCommand cmd = new OleDbCommand ("INSERT INTO upload (Vedhaeft) VALUES ('" + strFileName  + "','" + DateTime.Now.ToString("") + "')", con);
                    Response.Write(cmd.CommandText);
                    cmd.ExecuteNonQuery();
                    con.Close();
                }
                catch(Exception ex)
                {
                    Response.Write("Der skete en fejl ved processering af uploading: " + ex.Message); 
                }
            Response.Write("Filnavn eksisterer allerede, prøv at ombøbe filen!");
            }

}
    </script>
    <body link="#000000" text="#000000" bgcolor="#cccccc" vlink="#000000" alink="#0000ff">
        <form enctype="multipart/form-data" runat="server" ID="Form1">
            <P><FONT face="Verdana" color="#000000" size="5">Vælg fil:</FONT></P>
            <INPUT id="Vedlaeft" type="file" name="Vedlaeft" runat="server" size="20"><BR>
            <BR>
            <asp:button id="Button1" onclick="myUploadCode" runat="server" Text="Upload"></asp:button>
            <BR>
        </form>
    </body>
</HTML>
Avatar billede overchord Nybegynder
17. marts 2006 - 12:08 #1
I din sql streng indikerer du to felter istedet for at tilfoeje datoen.
Hvis du har et felt til filnavn og et til dato skal du aendre i starten af SQL'en
INSERT INTO uplaod(vedhaft, dato)....
Hvis du vil tilfoeje dato-navnen skal to ikke separere strFileName og DateTime med komma inde i VALUES() parantesen. Prev med & istedet.  ('" + strFileName  & DateTime.Now.ToString("")
Avatar billede mema Nybegynder
17. marts 2006 - 12:43 #2
Jeg har skrevet sådan, men det virker ikke:
....
OleDbCommand cmd = new OleDbCommand ("INSERT INTO upload (Vedhaeft) VALUES ('" + strFileName  & DateTime.Now.ToString("") + "')", con);
....

Egentlig har jeg i databasen kun 2 felter: ID og Vedhaeft. Så jeg ville gerne bare at tilføje (datoen yyyy-mm-dd-HHmmss) til uploadede filnavn for at forhindre overskrivning, hvis filen findes allerede i databasen.
Avatar billede overchord Nybegynder
17. marts 2006 - 12:48 #3
Men er det ikke dobbeltarbejde? Du tilfoejer jo en dato allerede oppe i:
strFileName = DateTime.Now.ToString("yyyy-MM-dd-HHmmss")+"-"+strFileName;

Du vil ogsaa faa problemer med at smide de i enden af filnavnet, da der ligger en extension som f.eks .jpg sidst i filnavnet.
Avatar billede mema Nybegynder
17. marts 2006 - 13:02 #4
Jeg har nu skrevet bare:
OleDbCommand cmd = new OleDbCommand ("INSERT INTO upload (Vedhaeft) VALUES ('" + strFileName + "')", con);
Denne virker heller ikke.
Jeg får hele tiden følgende fejl i browseren, selv om min web.config er allerede ændret:
------------------------------
<!-- Web.Config Configuration File -->

<configuration>
    <system.web>
        <customErrors mode="Off"/>
    </system.web>
</configuration>

Notes: The current error page you are seeing can be replaced by a custom error page by modifying the "defaultRedirect" attribute of the application's <customErrors> configuration tag to point to a custom error page URL.

<!-- Web.Config Configuration File -->

<configuration>
    <system.web>
        <customErrors mode="RemoteOnly" defaultRedirect="mycustompage.htm"/>
    </system.web>
</configuration>
-------------------------------
Iøvrigt arbejder jeg med FrontPage 2003 og .NET er installeret på serveren.
Avatar billede overchord Nybegynder
17. marts 2006 - 13:08 #5
:s - ok saa er jeg lidt lost. Det lyder umiddelbart som om du har problemer med at komme i kontakt med din db. Forhaqabentligt er der andre der kender bedre til den side af sagen..
Avatar billede websam Nybegynder
17. marts 2006 - 22:32 #6
Hvis du ikke får en detalieret fejl beskrivelse er din web.config ikke sat rigtigt op er du sikker på at du har sat debug="true" og customErrors mode="Off" der er noget der tyder på at du mangler det ene elelr det andet ?

/Websam
Avatar billede mema Nybegynder
25. marts 2006 - 19:08 #7
Der er ikke noget galt med web.config.
Avatar billede mema Nybegynder
30. marts 2006 - 13:49 #8
Jeg lukker
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