Avatar billede Slettet bruger
14. juli 2008 - 14:12 Der er 9 kommentarer og
1 løsning

Undren over Safaris behandling af fil-upload

I IE of Firefox vil en <input type="file"> ende op som et <input type="text" ...> plus en knap. Når man har valgt en fil kommer stien frem i dette felt.

Sådan er det ikke i Safari her kommer en knap og et felt med noget tekst udenfor brugerens kontrol.

Det jeg undrer mig over er at man i IE og FF kan slette sit valg af fil (man sletter bare manuelt indholdet af tekst feltet), det kan man tilsyneladende ikke i Safari.

Et træls eksempel kunne være en registreringsside til et socielt netværk. Lad os antage at det er en lang registreringsside, nederst er der et felt hvor man kan vedhæfte sit foto. Antag man har udfyldt formen, har valgt et billede, men fortryder sit valg og ønsker ikke at uploade noget billede i denne omgang.

Hvis man anvender IE og FF kan man fortryde valget af fil, men hvad i al verden gør man i Safari?

Det er måske et lidt tænkt eksempel, men jeg sidder med en applikation hvor man kan vedhæfte et bilag til et indlæg, et bilag er i denne sammenhæng enten en URL eller en fil som skal uploades, og her skal det være muligt at kunne fortryde et filvalg så man i stedet kan henvise til en URL.

Hvad er jeres erfaring med dette? Ender man op med helt at skulle forbyde Safari (det er til en intern applikation så det er ikke noget problem, alle brugerene har adgang til Firefox).

/daleif
Avatar billede Slettet bruger
14. juli 2008 - 14:52 #1
meget spændende, har lige testet FF3 på MAC, og i den skal man ikke ændre ved den valgte fil.

Skod, så må vi starte forfra.
Avatar billede olebole Juniormester
14. juli 2008 - 21:59 #2
<ole>

Del tilmelding og upload op i to faser, så kan brugeren jo bare undlade den del  =)

/mvh
</bole>
Avatar billede Slettet bruger
14. juli 2008 - 22:39 #3
Det er naturligvis den rigtige måde at gøre det på, det bliver dog nok ikke i denne omgang, har mange andre projekter som skal gøres færdige i løbet af sommeren.

Jeg endte op med at lave 10 skjulte rammer (hver med et URL felt, et fil upload og et tekst felt), man kan så helt slette et fejl hvis man fortryder et filvalg. Brugerne skal kun kunne bruge op til fem af den.
Det er nok et nogenlunde kompromis.

Jeg opdagede lige at FF3 på linux heller ikke tillader brugeren at fjerne hans valg.
Avatar billede olebole Juniormester
14. juli 2008 - 23:03 #4
Ellers kunne du måske have gjort noget à la:

<form id="foo" action="" method="post">
    <input type="text" name="foobar" value="Her er nogle tekstfelter ...">
</form>

<form action="" method="post" enctype="multipart/form-data" onsubmit="document.getElementById('foo').submit()">
    <input type="file" name="upfile">
    <button type="reset">Fortryd billede</button>
    <button type="submit">Upload</button>
</form>

- men det dur nok ikke ved flere filfelter. Du kan formodentlig ikke sende en form med et filfelt via JavaScript, så idéen kan sikkert ikke udvides  :o|

Læg selv et svar og accepter det  ;o)
Avatar billede olebole Juniormester
14. juli 2008 - 23:15 #5
- eller måske er dette bedre:

<script type="text/javascript">
function moveFields(sFrom, oTo) {
    var aNodes = document.getElementById(sFrom).childNodes;
    for (var i=0,j=aNodes.length; i<j; i++) {
        if (aNodes[i]&&aNodes[i].nodeType==1) oTo.appendChild(aNodes[i]);
    }
}
</script>
<form id="foo" action="" method="post">
    <input type="text" name="foobar" value="Her er nogle tekstfelter ...">
</form>

<form action="" method="post" enctype="multipart/form-data" onsubmit="moveFields('foo', this)">
    <input type="file" name="upfile">
    <button type="reset">Fortryd billede</button>
    <button type="submit">Upload</button>
</form>
Avatar billede Slettet bruger
14. juli 2008 - 23:40 #6
jeg vil lige kigge på denne her, det faktisk er ret god ide.

Det er ret nemt at lave et interface til mange af disse, men hvad så når der f.eks. er begrænsning på hvor meget man må uploade, dette kan man vist kun afgøre på serveren, dvs. det interface man anvender skal være noget som overlever en backknap. Synes tit at javascript indsat materiale forsvinder hvis man laver en 'back' i FF.
Avatar billede Slettet bruger
16. juli 2008 - 13:34 #7
hmm, da man ikke må neste forms så kommer dette vist til at krøve en helt masse interne former uden action og bare med en onsubmit="return false", men hvis det løser problemet så er det jo fint nok.
Avatar billede Slettet bruger
16. juli 2008 - 13:58 #8
du må godt lægge et svar for den. Har endnu ikke testet den helt igennem men det ser ud til at virke. Jeg laver dog kloner, som skjules, idet med din kode kunne man nå at se at hele formen blev flyttet ned under formen som kan submitte.
Avatar billede Slettet bruger
24. juli 2008 - 15:22 #9
olebole >> ville du have points for dette? Metoden fungerer fint.
Avatar billede Slettet bruger
05. august 2008 - 09:58 #10
Nuvel så lukker jeg den selv
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