Avatar billede oergaard Nybegynder
05. januar 2012 - 20:44 Der er 2 kommentarer og
1 løsning

Multiupload fra en FileUpload controller

Jeg er ved at lave en uploadside, som via en FileUpload controller, skal kunne uploade op til 8 filer (i nedenstående kodeeksempel dog kun 2).

Da FileUpload ikke understøtter dette og da FileUpload "mister" den valgte fil ved PostBack, har jeg tilføjet:

.aspx
<asp:Button ID="Button1" runat="server" Text="Vedhæft" />

.aspx.vb
Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
  If FileUpload1.HasFile Then
    If IsNothing(Session("fil_1")) Then
      Session("fil_1") = FileUpload1
    ElseIf IsNothing(Session("fil_2")) Then
      Session("fil_2") = FileUpload1
    End If
  End If
End Sub

Derudover har jeg tilføjet:

.aspx
<asp:Button ID="Button2" runat="server" Text="Upload" />

.aspx.vb
Protected Sub Button2_Click(sender As Object, e As System.EventArgs) Handles Button2.Click
  Dim sti As String = Server.MapPath("~/upload/")
  Dim filnavn As String = ""

  If Not IsNothing(Session("fil_1")) Then
    filnavn = CType(Session("fil_1"), FileUpload).FileName).ToLower()
    CType(Session("fil_1"), FileUpload).SaveAs(sti & filnavn)
  End If

  If Not IsNothing(Session("fil_2")) Then
    filnavn = CType(Session("fil_2"), FileUpload).FileName).ToLower()
    CType(Session("fil_2"), FileUpload).SaveAs(sti & filnavn)
  End If
End Sub

Ved afvikling igennem Visual Studio virker ovenstående perfekt, men men det er desværre en anden historie på IIS.

IIS:
Hvis jeg uploader en fil på f.eks. 5MB, virker det perfekt.

Hvis jeg uploader mere end en fil og alle filerne er mindre end 40KB, virker det perfekt.

Hvis jeg uploader mere end en fil og blot den ene fil er større end 40KB, får jeg fejlen: "Der er ikke adgang til en lukket fil:"

Jeg har synes, at have prøvet alt, men uden held. Håber der er en der kan hjælpe.
Avatar billede mjdigital Nybegynder
05. januar 2012 - 23:14 #1
Dette script har jeg personligt brugt sammen med .net 4.

http://www.uploadify.com/

///////////////////////Asp.net delen
  <script type = "text/javascript">

          $(document).ready(function () {
              var auth = "<% = Request.Cookies[FormsAuthentication.FormsCookieName]==null ? string.Empty : Request.Cookies[FormsAuthentication.FormsCookieName].Value %>";
              var ASPSESSID = "<%= Session.SessionID %>";
              var SizeLimit = "<%= MaxSizeLimit.Value %>";

              $("#<%=FileUpload1.ClientID%>").uploadify({
                  'uploader': 'scripts/uploadify.swf',
                  'script': 'Upload.ashx',
                  'cancelImg': 'images/cancel.png',
                  'folder': '../upload',
                  'fileExt': '*.jpg;*.gif;*.png;*.bmp',
                  'fileDesc': 'Image Files',
                  'queueSizeLimit': SizeLimit,
                  'sizeLimit': 819200,
                  'buttonText': 'Find billeder',
                  'multi': true,
                  'onAllComplete': function (event, data) {
                      location.reload();
                  },

                  scriptData: { ASPSESSID: ASPSESSID, AUTHID: auth }
              });


              $("#startUploadLink").click(function () {
                  $('#<%=FileUpload1.ClientID%>').uploadifyUpload();
                  return false;
              });

              $("#clearQueueLink").click(function () {
                  $("#<%=FileUpload1.ClientID%>").uploadifyClearQueue();
                  return false;
              });

              $("a[rel=fancybox]").fancybox({
                  'transitionIn': 'elastic',
                  'transitionOut': 'elastic',
                  'titlePosition': 'over',
                  'titleFormat': function (title, currentArray, currentIndex, currentOpts) {
                      return '<span id="fancybox-title-over" style="color: #FFFFFF;">Billede ' + (currentIndex + 1) + ' / ' + currentArray.length + (title.length ? '   ' + title : '') + '</span>';
                  }
              });

          });

</script>


<asp:FileUpload ID="FileUpload1" runat="server" />

<asp:CustomValidator ID="CustomValidator1" runat="server" ControlToValidate="FileUpload1" ErrorMessage="Billede må max fylde 800 kb." Visible="false"></asp:CustomValidator>

<asp:RegularExpressionValidator
id="RegularExpressionValidator1" runat="server"
ErrorMessage="Det er kun tilladt at uploade billeder"
ValidationExpression=".*(\.[Jj][Pp][Gg]|\.[Gg][Ii][Ff]|\.[Jj][Pp][Ee][Gg]|\.[Pp][Nn][Gg])"
ControlToValidate="FileUpload1"></asp:RegularExpressionValidator>
<br />

<a href="#" id="startUploadLink">Gem billeder</a>

///////////////////////Asp.net delen SLUT


Det hele kalder så mit upload script Upload.ashx


<%@ WebHandler Language="C#" Class="Upload" %>

using System;
using System.Web;
using System.Web.Security;
using System.IO;
using ForumModel;

public class Upload : IHttpHandler {
   
    readonly ForumEntities _entities = new ForumEntities();
   
    public void ProcessRequest(HttpContext context)
    {
var postedFile = context.Request.Files["Filedata"];
  string savepath;
  string tempPath;
  tempPath = " ~/user/upload/" + UserID + "/gallery";

            savepath = context.Server.MapPath(tempPath);
            var filename = postedFile.FileName;
            if (!Directory.Exists(savepath))
                Directory.CreateDirectory(savepath);
   
           
            postedFile.SaveAs(savepath + @"\" + guid + Path.GetExtension(filename));

  context.Response.Write(tempPath + "/" + guid + Path.GetExtension(filename));
            context.Response.ContentType = "text/plain";
            context.Response.StatusCode = 200;
}




Håber det gav dig en lille ide om hvad vej du skal gå :) Jeg har lavet den funktion og fungere perfekt.
Avatar billede mjdigital Nybegynder
05. januar 2012 - 23:17 #2
og husk at ændre

<system.web>
  <httpRuntime executionTimeout="240" maxRequestLength="20480" />
</system.web>

maxRequestLength er i KB :)

læs evt. mere her.


Håber mine svar var passende.
Avatar billede oergaard Nybegynder
09. januar 2012 - 19:47 #3
Tak for svaret.

Jeg har ikke brugt uploadify, men fik ud fra dit svar lavet mit eget alternativ. :)
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