Avatar billede webhelpers Praktikant
22. august 2005 - 14:49 Der er 18 kommentarer og
1 løsning

File upload

Hej

Er der en af jer som har et eksempel på hvordan SoftArtisans.FileUp virker i .net c#?

Jeg har en form, som ved submit skal gemme data fra inputfelter, samt gemme 1 billede i en mappe på serveren.

Håber på svar :-)
Avatar billede arne_v Ekspert
22. august 2005 - 14:58 #1
Hvorfor bruge et 3. parts komponent, når det er understøttet i selve ASP.NET ?
Avatar billede webhelpers Praktikant
22. august 2005 - 15:03 #2
Det behøver det heller ikke :-)
Avatar billede erikjacobsen Ekspert
22. august 2005 - 15:07 #3
Avatar billede webhelpers Praktikant
22. august 2005 - 20:30 #5
Min kode ser ud som nedenstående, men hvordan laver jeg et check på om filtypen enten skal være jpg/gif og at filen max må fylde 51.200 bytes? Og hvis den ikke overholder disse kriterier, så skal den skrive en fejlbesked?


<% @ Page Language="C#" Trace="false" ContentType="text/html" Debug="True" ResponseEncoding="UTF-8" validateRequest="false" LCID="1030" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.Odbc" %>
<%@ Import Namespace="System.IO" %>


<script language="c#" runat="server">

    void Page_Load()
    {
        if (!Page.IsPostBack)
        {

            String Username = Convert.ToString(Request.Form["username"]);
            DisplayUsername.Text = Username.ToUpper();

            string SenderUsernameValue = Convert.ToString(Request.Form["Senderusername"]);
            SenderUsername.Text = Convert.ToString(SenderUsernameValue);

            Int64 SenderIDValue = Convert.ToInt64(Request.Form["senderid"]);
            SenderID.Text = Convert.ToString(SenderIDValue);

            Int64 ReceiverIDValue = Convert.ToInt64(Request.Form["id"]);
            ReceiverID.Text = Convert.ToString(ReceiverIDValue);       
        }
        if (Page.IsPostBack){
           
            string Header = TextBoxHeader.Text;
            string Message = TextBoxMessage.Text;
            string Link = TextBoxLink.Text;
            DateTime Date = DateTime.Now;
            string SenderIP = Request.ServerVariables["REMOTE_HOST"];
            string LastID;

            String Username = DisplayUsername.Text;

            Int64 InsertSenderID = Convert.ToInt64(SenderID.Text);
            Int64 InsertReceiverID = Convert.ToInt64(ReceiverID.Text);
            string InsertSenderUsername = Convert.ToString(SenderUsername.Text);

            if (File1.PostedFile != null) //Checking for valid file
            {
                // Since the PostedFile.FileNameFileName gives the entire path we use Substring function to rip of the filename alone.
                string StrFileName = File1.PostedFile.FileName.Substring(File1.PostedFile.FileName.LastIndexOf("\\") + 1);
                string StrFileType = File1.PostedFile.ContentType;
                int IntFileSize = File1.PostedFile.ContentLength;
                //Checking for the length of the file. If length is 0 then file is not uploaded.
                if (IntFileSize <= 0)
                    Response.Write(" <font color='Red' size='2'>Uploading of file " + StrFileName + " failed </font>");
                else
                {
                    File1.PostedFile.SaveAs(Server.MapPath("/Pic/Upload/message/" + StrFileName));
                    Response.Write("<font color='green' size='2'>Your file " + StrFileName + " of type " + StrFileType + " and size " + IntFileSize.ToString() + " bytes was uploaded successfully</font>");
                }
            }
           
   
        }       
    }
    private static string GetConnection()
    {
        return "DRIVER={MySQL ODBC 3.51 Driver};Server=127.0.0.1;Database=xxxxx;Uid=dbuser;pwd=xxxxx;option=3";
    }
   
</script>

<html>
<body>
<form id="Form1" name="Form"  method="post" enctype="multipart/form-data" runat="server">
<asp:Label Visible=false ID="SenderID" runat="server" />
<asp:Label Visible=false ID="ReceiverID" runat="server" />
<asp:Label Visible=false ID="SenderUsername" runat="server" />
<TABLE ALIGN=center BORDER=0 CELLPADDING=2 CELLSPACING=2 HEIGHT=100% WIDTH=100%>
<TR>
  <TD VALIGN=top>

  <TABLE ALIGN=center BORDER=0 CELLPADDING=0 CELLSPACING=0 CLASS=td VALIGN=top WIDTH=100%>
  <TR>
    <TD HEIGHT=10></TD>
  </TR>
  <TR>
    <TD ALIGN=left CLASS=td_bold valign="middle">SEND BESKED TIL BRUGEREN <span class="td_orange"><b><asp:Label ID="DisplayUsername" runat="server" /></b></span> &nbsp;<img src="/pic/graphic/icon_send_besked.gif" border="0" width="20" height="12" /></TD>
  </TR>
  <TR>
    <TD HEIGHT=4></TD>
  </TR>
  <TR>
    <TD BGCOLOR=#EEEEEE HEIGHT=1></TD>
  </TR>
  <TR>
    <TD HEIGHT=8></TD>
  </TR>
  <TR>
    <TD CLASS=table_site>

      <TABLE ALIGN=left BORDER=0 CELLPADDING=2 CELLSPACING=0 CLASS=td VALIGN=top WIDTH=100%>
      <COLGROUP>
        <COL ALIGN=center VALIGN=top WIDTH=15>
        <COL ALIGN=left VALIGN=middle WIDTH=70>
        <COL ALIGN=left VALIGN=middle WIDTH=150>
        <COL ALIGN=center VALIGN=top WIDTH="%">
      </COLGROUP>
      <TR>
        <TD HEIGHT=5></TD>
      </TR>
      <TR>
        <TD ALIGN=center CLASS=td_orange VALIGN="top">*</TD>
        <TD valign="top"><b><asp:Label ID="LabelHeader" runat="server" Text="Overskrift:"></asp:Label></b></TD>
        <TD>
          <asp:TextBox ID="TextBoxHeader" runat="server" CssClass="input" Width="262"></asp:TextBox>
          <asp:RequiredFieldValidator ID="RequiredFieldValidator1" ControlToValidate="TextBoxHeader" Display="Dynamic" errormessage="<br />Du skal indtaste en overskrift" runat=server/>
        </TD>
      </TR>
      <TR>
        <TD ALIGN=center CLASS=td_orange VALIGN=top>*</TD>
        <TD valign="top"><b><asp:Label ID="LabelBesked" runat="server" Text="Besked:"></asp:Label></b></TD>
        <TD>
          <asp:TextBox id="TextBoxMessage" runat="server" CssClass="input" rows="10"  textmode="multiline" Columns="40" />
          <asp:RequiredFieldValidator ID="RequiredFieldValidator2" ControlToValidate="TextBoxMessage" Display="Dynamic" errormessage="<br />Du skal indtaste en besked" runat=server/>
        </TD>
      </TR>
      <TR>
        <TD ALIGN=center CLASS=td_orange VALIGN=middle></TD>
        <TD valign="middle"><b><asp:Label ID="LabelPicture" runat="server" Text="Vedhæft billede:"></asp:Label></b></TD>
        <TD><input id="File1" name="File1" type="file" runat="server" class="input" size=26></TD>
      </TR>
      <TR>
        <TD ALIGN=center CLASS=td_orange VALIGN=middle></TD>
        <TD valign="middle"><b><asp:Label ID="LabelLink" runat="server" Text="Evt. link:"></asp:Label></b></TD>
        <TD><asp:TextBox ID="TextBoxLink" runat="server" CssClass="input" Width="262"></asp:TextBox></TD>
      </TR>
      <TR>
        <TD><IMG BORDER=0 HEIGHT=0 SRC=/pic/0.gif WIDTH=15></TD>
        <TD><IMG BORDER=0 HEIGHT=0 SRC=/pic/0.gif WIDTH=70></TD>
        <TD><IMG BORDER=0 HEIGHT=0 SRC=/pic/0.gif WIDTH=150></TD>
        <TD><IMG BORDER=0 HEIGHT=0 SRC=/pic/0.gif WIDTH="%"></TD>
      </TR>
      </TABLE>
    </TD>
  </TR>
  <TR>
    <TD HEIGHT=25>&nbsp;</TD>
  </TR>
  <TR>
    <TD align="center"><asp:ImageButton ID="Button1" runat="server" CssClass="input" ImageUrl="/pic/graphic/button_send.gif" BorderStyle="None" /></TD>
  </TR>
  <TR>
    <TD HEIGHT=25></TD>
  </TR>
  </TABLE>
  </TD>
</TR>
</TABLE>
</form>
</body>
</html>
Avatar billede arne_v Ekspert
22. august 2005 - 20:53 #6
fisker du dem ike ud her:

                string StrFileType = File1.PostedFile.ContentType;
                int IntFileSize = File1.PostedFile.ContentLength;

?

så er det vel bare at test på dem ?
Avatar billede webhelpers Praktikant
22. august 2005 - 23:26 #7
Kan du forklare, hvorfor den ikke kan finde ud af dette?

else if ((StrFileType != "image/pjpeg") || (StrFileType != "image/gif"))
                {
                    Response.Write(StrFileType + "Billedet skal være GIF eller JPEG format");
                }
Avatar billede webhelpers Praktikant
22. august 2005 - 23:27 #8
Hvis jeg nu blot benytter 1 check, så virker det..:

else if (StrFileType != "image/pjpeg")
{
  Response.Write(StrFileType + "Billedet skal være GIF eller JPEG format");
}
Avatar billede erikjacobsen Ekspert
22. august 2005 - 23:28 #9
erstat || med &&
Avatar billede webhelpers Praktikant
22. august 2005 - 23:33 #10
Nå ja...jesus...

:-D
Avatar billede erikjacobsen Ekspert
22. august 2005 - 23:36 #11
Og så kan du også få image/jpeg

Det er nu ikke en sikker måde at sikre, at det er et billede, da enhver hacker kan uploade et script, så det får den filtype. Du skal uomtvisteligt også checke extension.
Avatar billede webhelpers Praktikant
22. august 2005 - 23:50 #12
else if (System.IO.Path.GetExtension(StrFileName).ToLower() != ".jpg")

osv..

- Vil være mere sikkert eller hvad?
Avatar billede erikjacobsen Ekspert
22. august 2005 - 23:52 #13
Ja. Husk også .gif
Avatar billede webhelpers Praktikant
22. august 2005 - 23:57 #14
Yes. Takker.

Poster I alle 3 lige et svar?

Tak for hjælpen.
Avatar billede erikjacobsen Ekspert
23. august 2005 - 00:00 #15
Ingen point til mig, tak.
Avatar billede webhelpers Praktikant
23. august 2005 - 00:12 #16
Why not?

Lige en sidste ting, som du måske kan svare på. Er det muligt at lave tjekket inden filen submittes og checkes? Jeg tænker på at man ved fx tomme felter kan lave check med <asp:RequiredFieldValidator ID="RequiredFieldValidator2" ControlToValidate="TextBoxMessage" Display="Dynamic" errormessage="Du skal indtaste en besked" runat=server/>

- Og det er jo smart og hurtigt...
Avatar billede arne_v Ekspert
23. august 2005 - 08:20 #17
Du kan godt checke ihvertfald filnavn med noget client side JavaScript inden
det submittes.
Avatar billede arne_v Ekspert
23. august 2005 - 08:21 #18
og et svar fra mig
Avatar billede arne_v Ekspert
29. september 2005 - 20:49 #19
tid at få afsluttet her ?
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