Avatar billede aerobee Nybegynder
16. november 2005 - 17:57 Der er 7 kommentarer og
1 løsning

Preview upload

Hejsa.
Jeg har et lille script som gør at man kan preview de billeder man vil uploaded INDEN de bliver uploaded (trykker submit).

<script type="text/javascript">
<!-- Begin

/***** CUSTOMIZE THESE VARIABLES *****/

  // width to resize large images to
var maxWidth=122;
  // height to resize large images to
var maxHeight=125;
  // valid file types
var fileTypes=["bmp","gif","png","jpg","jpeg"];
  // the id of the preview image tag
var outImage="previewField";
  // what to display when the image is not valid
var defaultPic="spacer.gif";

/***** DO NOT EDIT BELOW *****/

function preview(what){
  var source=what.value;
  var ext=source.substring(source.lastIndexOf(".")+1,source.length).toLowerCase();
  for (var i=0; i<fileTypes.length; i++) if (fileTypes[i]==ext) break;
  globalPic=new Image();
  if (i<fileTypes.length) globalPic.src=source;
  else {
    globalPic.src=defaultPic;
    alert("THAT IS NOT A VALID IMAGE\nPlease load an image with an extention of one of the following:\n\n"+fileTypes.join(", "));
  }
  setTimeout("applyChanges()",200);
}
var globalPic;
function applyChanges(){
  var field=document.getElementById(outImage);
  var x=parseInt(globalPic.width);
  var y=parseInt(globalPic.height);
  if (x>maxWidth) {
    y*=maxWidth/x;
    x=maxWidth;
  }
  if (y>maxHeight) {
    x*=maxHeight/y;
    y=maxHeight;
  }
  field.style.display=(x<1 || y<1)?"none":"";
  field.src=globalPic.src;
  field.width=x;
  field.height=y;
}
// End -->
</script>


Kaldes med:
<img alt="Graphic will preview here" id="previewField" src="spacer.gif">

Den virker også meget fint. Mit spørgsmål handler så om der er nogle der kan hjælpe mig med følgende:

Ovenstående script kan man kun vises 1 billede af gangen.
Men hvad nu hvis jeg har 9 input felter til fil upload og jeg gerne vil give brugeren den service at vise ham alle de billeder han har valgt til upload INDEN han trykker på submit.

Hvordan kan ovenstående script udvides sådan at den kan vise 9 billeder på een gang kaldet med 9 <img> tags ?
Avatar billede aerobee Nybegynder
16. november 2005 - 18:00 #1
Rettelse.

Jeg kalder scriptet med:

<input id="filename[]0" onChange="preview(this)" type="file" name="filename[]" size="12"><br><img alt="Graphic will preview here" id="previewField" src="spacer.gif">
Avatar billede psykochicken Nybegynder
17. november 2005 - 01:54 #2
Måske:

<script type="text/javascript">
<!-- Begin
/***** CUSTOMIZE THESE VARIABLES *****/
  // width to resize large images to
var maxWidth=122;
  // height to resize large images to
var maxHeight=125;
  // valid file types
var fileTypes=["bmp","gif","png","jpg","jpeg"];
  // what to display when the image is not valid
var defaultPic="spacer.gif";

/***** PLEASE DO EDIT BELOW *****/
function preview(what){
  var browser = navigator.userAgent;
  var IE = (browser.indexOf('MSIE')>-1)?true:false; //Internet Explorer
  if(!IE){
    alert('Denne funktion er kun tilgængelig i IE !'); 
  }
  else {
    var source="";
    source=what.value;
    var ext=source.substring(source.lastIndexOf(".")+1,source.length).toLowerCase();
    for (var i=0; i<fileTypes.length; i++) {
      if (fileTypes[i]==ext) {
          break;
        }
      globalPic=new Image();
      if (i<fileTypes.length) {
          globalPic.src=source;
      }
      else {
          globalPic.src=defaultPic;
          alert("THAT IS NOT A VALID IMAGE\nPlease load an image with an extention of one of the following:\n\n"+fileTypes.join(", "));
      }
    }
    var globalPic;
    var field="";
    field=document.getElementById(what.id+'1');
    var x=parseInt(globalPic.width);
    var y=parseInt(globalPic.height);
    if (x>maxWidth) {
        y*=maxWidth/x;
        x=maxWidth;
    }
    if (y>maxHeight) {
        x*=maxHeight/y;
        y=maxHeight;
    }
    field.style.display=(x<1 || y<1)?"none":"";
    field.src=globalPic.src;
    field.width=x;
    field.height=y;
  }
}
// End -->
</script>

<input id="filename0" onChange="preview(this)" type="file" name="filename" size="12"><br>
<img alt="Graphic will preview here" id="filename01" src="gspacer.gif" width="100" height="25"><br>
<input id="filename1" onChange="preview(this)" type="file" name="filename" size="12"><br>
<img alt="Graphic will preview here" id="filename11" src="spacer.gif" width="100" height="25"><br>
...osv

..så får du også gjort brugerne opmærksom på at koden KUN virker i IE ;o)

/psc
Avatar billede aerobee Nybegynder
17. november 2005 - 08:50 #3
Hejsa.
Ja det fungerer jo udemærket med det du har vist der. Men når jeg prøver at koble endnu et <input file=file> på så går det galt.

Her er hvad jeg skriver:

<input id="filename0" onChange="preview(this)" type="file" name="filename" size="12"><br>
<img alt="Graphic will preview here" id="filename01" src="gspacer.gif" width="100" height="25"><br>
<input id="filename1" onChange="preview(this)" type="file" name="filename" size="12"><br>
<img alt="Graphic will preview here" id="filename11" src="spacer.gif" width="100" height="25"><br>
<input id="filename2" onChange="preview(this)" type="file" name="filename" size="12"><br>
<img alt="Graphic will preview here" id="filename112" src="spacer.gif" width="100" height="25"><br>

Men det spiller ikke..
Avatar billede psykochicken Nybegynder
17. november 2005 - 11:35 #4
Du skal bare følge navngivning-syntaksen "billedets id = input id + 1"
altså:
<input id="filename2"... og <img id="filename21"...
<input id="filename3"... og <img id="filename31"...osv

/psc
Avatar billede aerobee Nybegynder
17. november 2005 - 11:56 #5
What can i say - it works.

Smid et svar psc
Avatar billede psykochicken Nybegynder
17. november 2005 - 12:28 #6
kommer her ;o)
Avatar billede aerobee Nybegynder
17. november 2005 - 12:31 #7
Tak for hjælpen
Avatar billede psykochicken Nybegynder
17. november 2005 - 12:59 #8
velbekomme - og tak for point :o)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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