Bildöverföring visar “ C: \ fakepath \ image … ” på Mac OS [duplikat ]

<åt sidan class = "s-notice s-notice__info js-post-notice mb16" role = "status">

Den här frågan har redan svar här :

Kommentarer

  • hämta den första filen från kontrollen och få sedan namnet på filen, den ignorerar filvägen på krom, och kommer också att korrigera sökvägen för t.ex. broswers. när du sparar filen måste du använda metoden System.io.Path.GetFileName för att bara få filnamnet för webbläsare var fileUpload = $ (" # ContentPlaceHolder1_FileUpload_mediaFile ") .get (0); var filer = fileUpload.files; var mediafilnamn = " "; för (var i = 0; i < files.length; i ++) {mediafilename = files [i] .name; }

Svar

Detta är en webbläsares säkerhetsfunktion, inte under webbplatsens kontroll.

Kommentarer

  • Och Ian Hickson, som är inblandad i HTML5-specifikationerna, skriver : " Den ursprungliga planen var att bara ha filnamnet. Tyvärr visar det sig att om du gör det finns det vissa webbplatser som går sönder eftersom de förväntar sig vägen (och de förväntar sig en Windows-bana, inte mindre). Det är därför Opera och IE8 returnerar en falsk väg – inte för att HTML5 säger att man ska göra det. Jag fick faktiskt HTML5 att säga det för att de gjorde det. "
  • Jag lärde mig något idag, men det <

ändrar inte verkligen frågan. Om alla webbläsare returnerar en falsk sökväg, varför visa banan alls?

  • Till exempel @zneak på grund av hårdvaru-firmware som förväntar sig det , som inte lätt kunde ändras. Så: egentligen bara för att ' är för många webbplatser där ute som förväntar sig en väg, varav några inte lätt kan ändras. 🙁
  • @Arjan, nu kan du lägga upp det som svar: D
  • Jag vet vad @YOU ' hänvisar till , men jag tror att detta redan har besvarats helt bra! (vi kan naturligtvis redigera det till det här svaret.)
  • @zneak, notera att Stack Exchange HTML egentligen bara är <input type="file" name="filename" id="filename-input" value="browse" ...>.
  • @Arjan Nej, det ' är inte. På Safari är filvägen inte ' t dyker upp före en <input type="file">. Stack Exchange-utvecklare valde medvetet att visa (falsk) filsökväg i en ruta med en layout som liknar den du ' d får med Windows. Sökelementet ' s id är shadow-filename. Om du döljer det är filvägen försvinner.
  • Är du säker, @zneak? Jag ser det bara i Chrome, inte i andra webbläsare, på Stack Exchange-webbplatserna …
  • @Arjan Ja, det är jag. Välj en fil, starta webbinspektören, skriv document.querySelector('#shadow-filename').style.display = 'none' och titta på den försvinna.
  • Jag menade: är du säker på att alla webbläsare visar det för dig, @zneak? Inte på min Mac.
  • @Arjan Firefox visar inte ', men att ' är förmodligen för skäl som nämns i din första länk (dvs. det ger bara det faktiska filnamnet när du frågar efter värdet <input type="file"> '). Förutom det fungerar det på samma sätt: dölj shadow-filename, och du blir verkligen av med filnamnfältet.
  • Okej, jag hade fel när det gäller <input type="file" ...> vilket verkligen inte är vad som visas när JavaScript slår in, @zneak. Men varför skylla SE-webbplatserna för att visa den sökväg som webbläsaren ger dem …?
  • @Arjan Jag skyller SE för att ha använt en trasig funktion i HTML 5. Dessutom implementerar alla webbläsare redan någon form för att berätta för användaren vilken fil de valde. Varför var de tvungna att byta ut det?
  • Ah, @zneak, jag antar att jag inte ' inte använder många webbplatser som använder gammal <input type="file" ...> men så skulle Chrome bara visa det bara filnamnet utan dess sökväg. (Fortfarande då sökvägen som skickades till servern skulle vara C:\fakepath, men man skulle inte se den.) Jag kan ' t säga varför SE behövde ersätta det. Kanske för att de inte laddar upp till SE utan till imgur.com, men även det skulle förmodligen kunna göras utan dummy <input> saker. Eller så kanske de bara ville ha att dialogen skulle se likadan ut i varje system? (Våfflor som svarade på den dubbla frågan kanske vet.)
  • @zneak, jag vet inte ' om ditt operativsystem, men för windows, gör det här, få den första filen från kontrollen och få sedan namnet på filen, kommer den att ignorera filvägen på krom, och kommer också att korrigera sökvägen för t.ex. broswers. när du sparar filen måste du använda metoden System.io.Path.GetFileName för att bara få filnamnet för webbläsare var fileUpload = $ (" # ContentPlaceHolder1_FileUpload_mediaFile ") .get (0); var filer = fileUpload.files; var mediafilnamn = " "; för (var i = 0; i < files.length; i ++) {mediafilename = files [i] .name; }
  • Lämna ett svar

    Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *