Jag får ett mycket irriterande fenomen när jag försöker vidareförmedla användare till filer som ligger på delade nätverksplatser. Om jag skickar dem vidare till en fil som inte innehåller åäö så funkar det fint. Dock, så fort någon av dessa chars ligger med i strängen så hittar inte webbläsaren filen. Vad händer om du skriver: Då måste jag konvertera blankstegen också, men tyvärr, det funkar inte. Du redirectar till en fil, är det så du vill göra? För i så fall förstår inte filsystemet när du kör url-encode på ett filnmn. Vad är rutinens syfte? Ja, jag redirectar till en fil. Eftersom det är webbservern så måste du nämligen ange webbserverns sökväg, dvs localhost/katalog/filnamn.txt eller www.namn.se/katalog/testfilåäö.txt Nope, Pelle, det stämmer inte det du säger. Då hade det inte fungerat att redirecta till "X:\test.txt" heller (det vill säga filer utan "å ä ö"), vilket det gjorde. Däremot Server.Transfer måste redirecta till en fil som ligger under webbens root, om det var det du tänkte på kanske. Hävdar fortfarande att om du skriver file:// så avser det "min dator" om jag surfar på din site.. <b>Hävdar fortfarande att om du skriver file:// så avser det "min dator" om jag surfar på din site..</b> Prova att kolla på en av era nätverksdiskar. Ta ut sökvägen och skriv "file://<sökvägen till din fil>" i din webbläsare (men se upp för å ä ö), så lovar jag dig att det funkar. Citerat (Pelle Johansson): Ok, är det mappade diskar som alla har så går det ju an - fast jag har aldrig använt eller sett någon använda file:/// i kombination med redirect om det inte varit en annan webbsida eller html-sida. Jo, det stämmer det du säger. Jag har tidigare i posten, som du säkert har läst, beskrivit båda metoderna att gå tillväga, men som jag sa så har inte ASPNET-kontot åtkomst till nätverket (så till vida att det är ett lokalt användarkonto på webbservern), och jag använder inte impersonation. Detta leder till alternativet att direktlänka användaren till filen dvs genom att "redirecta". För att ge ännu lite mer kött på benen för någon som eventuellt sitter och klurar på detta så kan jag meddela att följande fungerar:Response.Redirect (dvs inte uppläsning) till filer med åäö
Anledningen till att jag kör Response.Redirect är att användaren har åtkomst till filerna, och jag använder mig inte av impersonation, och därmed vill jag inte släppa ut ASPNET-kontot på nätverket.
Så t ex:
Response.Redirect("X:\Temp.txt"); <- funkar
Response.Redirect("X:\Temp ÅÄÖ.txt"); <- funkar ej
Några idéer?Sv: Response.Redirect (dvs inte uppläsning) till filer med åäö
Response.Redirect(Server.URLEncode("X:\Temp ÅÄÖ.txt")); Sv:Response.Redirect (dvs inte uppläsning) till filer med åäö
Det här nedan är varianten på ditt förslag:
Response.Redirect("file://" + Server.UrlEncode(strPath).Replace("+", " ")); <- funkar utan åäö (och med blanksteg)Sv: Response.Redirect (dvs inte uppläsning) till filer med åäö
Sv:Response.Redirect (dvs inte uppläsning) till filer med åäö
Syftet är att det ligger i en sökbar lista av dokument, som antingen pekar till dokument som ligger på webbservern (dessa pushas till användaren på det gamla hederliga viset med en file save/open dialogruta), eller dokument som ligger på andra delade nätverksenheter. Dessa nätverksenheter har användaren tillgång till, men inte ASPNET-kontot. Därför kan jag inte göra en uppläsning av filen, utan användaren måste redirectas till den fil som har efterfrågats.
Som du (Pelle) såg i mitt första exempel, så redirectade jag utan url-encode, men webbläsaren hittar ändå inte filen. Några förslag?Sv: Response.Redirect (dvs inte uppläsning) till filer med åäö
Sv:Response.Redirect (dvs inte uppläsning) till filer med åäö
Däremot klurade jag ut en form av lösning nu. Jag tycker att det är en fullösning, så andra får gärna komma med bättre förslag. Men jag tänkte dela med mig av den iaf, om någon annan får samma strul som jag.
Response.Write("<script type=\"text/javascript\">location.href(\'file://" + strPath + "\')</script>");
Lösningen fungerar som jag vill, men är inte någon vidare vacker variant, så om någon har någon annan lösning så hojta gärna till.
Edit: Glöm att posta tillbaka på det viset. Funkade inget vidare när jag väl började prova. Jag var lite väl snabb att ropa hej.Sv: Response.Redirect (dvs inte uppläsning) till filer med åäö
Sv:Response.Redirect (dvs inte uppläsning) till filer med åäö
Användaren (vilket jag antar är den som surfar?) har tillgång till filerna på sin nätverksenhet. Då blir det väl korrekt att ange file://?
Lite off-topic: brukar inte file:// ha 3 st /? Och varför i så fall?
ThomasSv:Response.Redirect (dvs inte uppläsning) till filer med åäö
Ja, angående det där med "///" eller inte, där har jag inte koll på standarden riktigt.
Däremot, mitt exempel som jag så att säga kom på. Det fungerade inget vidare heller. När jag väl öppnade filen så stod det precis som jag postade tillbaka från aspx-sidan :(
Dvs, problem = inte solved.
Några nya idéer? Att det ska vara så svårt att redirecta till en fil med lite svenska bokstäver i...Sv:Response.Redirect (dvs inte uppläsning) till filer med åäö
"Hävdar fortfarande att om du skriver file:// så avser det "min dator" om jag surfar på din site.."
Ja, det ska ju vara "min dator". Det är ett intranät jag kodar för. Det vill säga att alla användare har tillgång till samma nätverksdiskar.Sv: Response.Redirect (dvs inte uppläsning) till filer med åäö
Skall användaren få den nerladdad brukar man inte använda redirect utan istället läsa upp den binärt och köra response.binarywrite så användaren får ta emot den via en sedvanlig "download". Om det däremot är excel, word eller liknande kan du också använda samma teknik och då kan användaren öppna eller spara filen beroende på vad de vill..Sv:Response.Redirect (dvs inte uppläsning) till filer med åäö
Därför behöver jag ha möjlighet till att kunna göra:
Response.Redirect("file:///" + strPath); //som dessutom klarar åäöSv: Response.Redirect (dvs inte uppläsning) till filer med åäö
1. Om man manuellt skriver in "file:///X:\Fil Å.txt" i webbläsaren, så öppnas filen (det vill säga att då funkar åäö).
2. Response.Redirect("file:///" + strPath); till en fil utan åäö fungerar, exempelvis strPath = "X:\Fil 1.txt".
Det försök jag gjorde tidigare att öppna filen mha javascript ger resultatet att det skapas en temporär fil utan innehåll, t ex genom att köra ClientScript.RegisterStartupScript.
EDIT:
Vi stryker det som stod här nedanför om att först encoda sökvägen, för det lär bara leda in på konstigheter (det fungerade ju ändå inte med åäö, så varför nämna det).