Avatar billede idiotbarn Nybegynder
14. august 2005 - 18:05 Der er 11 kommentarer og
1 løsning

Upload med noget ligende statusbar

Jeg er igang med at lave en side der kan uploade 5 filer af gangen, når man klikker for at gå igang med at uploade kommer et div frem med "filen uploades...bla bla bla" samt et lille gif.

Jeg ville dog gerne ha det lavet så at der står hvilken fil den er igang med at uploade, da javascript jo nok ikke kan holde styr på det, må det vel blive med et postback hver gang en fil er blevet uploadet.

Ind til videre uploades filerne bare i en for løkke, men hvordan gennemtvinger jeg et postback mens jeg samtidig kun uploader én fil af gangen og hvad er den smarteste måde at holde styr på de næste filer der skal uploades?

og er der andre måder at gøre det på?
Avatar billede brian0905 Nybegynder
15. august 2005 - 08:20 #1
Du kan fx. bruge AJAX, det vil sige lade dit Javascript lave asynkrone kald til en ASP.NET side for at hente de informationer der skal bruges, samt en callback hver gang der er blevet oploadet en side, det er nemt, hvis man bruger Ajax.NET: http://ajax.schwarz-interactive.de/csharpsample/default.aspx alternativt kan man selv implementere sin version af det:
http://www.15seconds.com/issue/050526.htm

På denne måde slipper du for at lave et postback hver gang, og siden vil alligevel kunne opdatere sig selv. Jeg vil forslå at du benytter Ajax.NET, da den er utrolig nem at bruge.
Avatar billede idiotbarn Nybegynder
15. august 2005 - 16:28 #2
hej...det ser sq interessant ud, jeg er lige ved at forsøge mig med at komme få det til at fungere, men der sker ikke rigtigt noget...jeg bruger webmatrix, så bruger ikke så ofte codebehind filer, da det ikke er specielt oplagt i programmet (ved godt det ikke er så smart at undlade det, men det gør jeg lige i starten...), jeg har:

web.config:
<httpHandlers>
      <add verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax" />
</httpHandlers> 

Min aspx side:

<%@ Page Language="C#"%>
<script runat="server">
public class Index
{
  private void Page_Load(object sender, EventArgs e){
      Ajax.Utility.RegisterTypeForAjax(typeof(Index));
  }


[Ajax.AjaxMethod()]
public int ServerSideAdd(int firstNumber, int secondNumber)
{
  return firstNumber + secondNumber;
}
}

</script>
<html>
<head>
</head>
<body>
    <form runat="server">
        <script language="javascript">
        var response = Sample.ServerSideAdd(100,99);
        alert(response.value);
      </script>
    </form>
</body>
</html>



jeg har også prøvet med: var response = this.ServerSideAdd(100,99); men der sker ikke rigtigt noget, det er sikkert bare en opsætningsfejl, kan det ikke lade sig gøre bare på én side?
Avatar billede brian0905 Nybegynder
16. august 2005 - 12:46 #3
Hmm.... jeg koder aldrig inline...

Jeg tror du er løbet ind i noget synkronisering. prøv at ændre til det her i stedet

</script>
<html>
<head>
</head>
<body>
    <form runat="server">
        <script language="javascript">
        function callback_funk(res)
        {
          alert(res.value);
        }
        Sample.ServerSideAdd(100,99, callback_funk);
      </script>
    </form>
</body>
</html>
Avatar billede idiotbarn Nybegynder
21. august 2005 - 19:47 #4
så har jeg allieret mig med Visual web dev. og nu kører det, men jeg kan ikke helt gennemskue hvordan det skal kører med sammen med upload. Er det bare at sætte [Ajax.AjaxMethod()] før funktionen der uploader, og så få den til at retunere et eller andet hvergang at der er blevet uploadet en fil? Hvordan fanger man den så?
Avatar billede brian0905 Nybegynder
22. august 2005 - 08:34 #5
Når du uploader dine filer har du en mekanisme til dette fra klienten af. Og så sikkert noget server side kode der tager imod det, clientside kalder kan du nu kalde din serverside metode fra javascript, her indsætter du så den callback metode der skal udføres når din serverside metode har returneret som sidste parameter i Ajax kald. dvs.

<script language="javascript">
function callbackmetode()
{
  alert('dette kode bliver kaldt når upload file returnerer');
}

function uploadfile()
{
  Default.uploadfile(navn, placering, callbackmetode);
}
</script>
Avatar billede idiotbarn Nybegynder
23. august 2005 - 17:54 #6
ok takker...jeg tror jeg er ved at ha lidt styr på hvordan det fungere...ligger du et svar?

Der er stadig en ting jeg er lidt forvirret over...jeg har en funktion:
function testfunk(Html)
{
document.getElementById("hrefCheck").innerHTML="<br><center>Doing stuff...</center>";
document.getElementById("hrefCheck").style.visibility='visible';
//her kaldes c# metoden og efter dette sker en masse mere
var hrefs=Editor.findHref(Html);
...
}

det virker fint nok, men div'et hrefCheck bliver først vist når den er færdig med at køre det hele igennem...hvordan kan jeg vise div'et med teksten "do stuff" sådan at det bare bliver vist så snart man aktivere funktionen?
Avatar billede brian0905 Nybegynder
24. august 2005 - 07:55 #7
Hmm... det forvirrer og så mig, for mig at se burde teksten blive sat med det samme. Du kan eventuelt prøve at splitte det ud i sin egen separate funktion, men kan ikke se hvorfor det skulle have noget indvirkning... det kan være nogle af javascript guruerne kan svare på det :-)
Avatar billede idiotbarn Nybegynder
24. august 2005 - 11:15 #8
Ja...prøver lige derovre...
Avatar billede idiotbarn Nybegynder
24. august 2005 - 11:20 #9
uh...sidste ting...hvad er forskellen på om man går det med:
var hrefs=Edior.findHref(Html)

eller

Editor.findHtml(Html,findHtml_Callback())?
Avatar billede brian0905 Nybegynder
24. august 2005 - 11:34 #10
Jeg har ikke kunne få det første til at virke ordentligt. I dokumentationen står der at hvis man har brug for at behandle en returværdi skal man give en callback metode med, da kommunikationen sker asynkront, og du derfor ikke kan garantere hvornår den returnerer med en værdi.
Avatar billede idiotbarn Nybegynder
24. august 2005 - 12:02 #11
nåh ja ok...det er vel egentligt meget logisk...med hensyn til det med at vise div'et: http://www.eksperten.dk/spm/642590
Avatar billede idiotbarn Nybegynder
27. august 2005 - 18:26 #12
jeg er lige ved at prøve at få det til at fungere, men jeg får en fejl.

[Ajax.AjaxMethod()]
public String UploadFileAtIndex(int i)
        {
        String FileName;
        String newName;
        bool renamed;

        renamed=false;
        System.Web.HttpPostedFile CurrentFile=Request.Files[i];
...

når den skal udføre sidste linie kommer fejlen:

System.Web.HttpException Anmodningen er ikke tilgængelig i denne kontekst

Hvad er fejlen?
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