?
Solved

How can I Use Server.MapPath() when the filename has a comma in it?

Posted on 2001-08-30
24
Medium Priority
?
474 Views
Last Modified: 2008-01-09
I'm trying to use the Server.MapPath() method to check for the existance of a certain file.  Unfortunately the file that I'm searching for may have a comma in the filename ex <c:\test, test.txt>.  I have no control over the filename so I need to find a work around that will allow me to use extract the actual full path of the file.

Currently I get the following error:

Server.MapPath() error 'ASP 0173 : 80004005'
Invalid Path Character
0
Comment
Question by:maytawn
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 10
  • 6
  • 2
  • +3
24 Comments
 
LVL 2

Expert Comment

by:Ixeus
ID: 6439680
Server.MapPath(Server.htmlencode("c:\test, test.txt"))

~Ixeus

(think this will work?)
0
 
LVL 9

Expert Comment

by:AlfaNoMore
ID: 6439697
Why are you using Server.Mappath when you have the full path anyway? If you pass "C:\test, test.txt" to server.mappath, it probably will cause an error. What you put inside mappath is the virtual file path: Server.Mappath("/directory1/directory1.1/test, test.txt")

And this will be converted into something like: "C:\InetPub\WWWroot\Server1\directory1\directory1.1\test, test.txt".
0
 
LVL 2

Expert Comment

by:Ixeus
ID: 6439722
I don't think that throws an error Alpha, it just gives what you give it... I believe he just gave an example, not what he actually did... but if he did. I don't know
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 2

Expert Comment

by:Ixeus
ID: 6439796
I don't think that throws an error Alpha, it just gives what you give it... I believe he just gave an example, not what he actually did... but if he did. I don't know
0
 
LVL 9

Expert Comment

by:AlfaNoMore
ID: 6439820
These are the errors I got with:

Server.MapPath("C:\test, test.txt")
"The Path parameter for the MapPath method must be a virtual path. A physical path was used."

Server.MapPath("test, test.txt")
"An invalid character was specified in the Path parameter for the MapPath method."

Server.MapPath(Server.URLEncode("test, test.txt"))
D:\SERVER-CLIENTS\Bis-Web\2-Sites-Not-Hosted-By-Bis-Web\A&L_Intranet\_management\test%2C+test%2Etxt

So I guess it works with your example then lxeus?

0
 
LVL 19

Expert Comment

by:daveamour
ID: 6439839
Can we use Server.MapPath("test" & chr(44) & " test.txt")

?

Dave
0
 
LVL 2

Expert Comment

by:Ixeus
ID: 6439856
I believe Server.Mappath(Server.HTMLEncode("test, text.txt")) would work fine...

did it?

0
 
LVL 19

Expert Comment

by:daveamour
ID: 6439863
Server.HTMLEncode is used to preserver characters displatyed in an HTML page from not being interpreted as HTML  - ie displaying a less than sign

All the work here is done on the server so I don see how this solves anything

Dave
0
 
LVL 2

Expert Comment

by:Ixeus
ID: 6439865
Believe so Alpha, I use Server.HTMLencode for any field manipulation or parameter passing, simply cos of illegal chars throwing errors...

~Ixeus
0
 
LVL 2

Expert Comment

by:Ixeus
ID: 6439879
p.s. I think he went to bed...

0
 
LVL 9

Expert Comment

by:AlfaNoMore
ID: 6440082
I think Server.URLencode is the one to use. Surely Server.HTMLEncode would do nothing to "test, test.txt", as there's no illegal characters in there?

Server.URLPathEncode might be the real one to try?
0
 
LVL 9

Expert Comment

by:AlfaNoMore
ID: 6440089
And maytawn... WAKE UP!!!!
0
 
LVL 2

Expert Comment

by:Ixeus
ID: 6440106
blehhhhhhhhhhhhh what everrrrrr :p
same difference, idea was there
oh well =p

guess yours then
0
 
LVL 29

Expert Comment

by:Göran Andersson
ID: 6440129
If you have a file at "/work/test, test.txt" you can user Server.MapPath("/") to get the path to the applications root, then add the virtual path. If you have a file at "work/test, test.txt", you can user Server.MapPath(".") to get the path of the current folder, then add the virtual path.

Function GetPath(strFile)
   If Left(strFile,1)="/" Then
      GetPath=MapPath("/") & strFile
   Else
      GetPath=MapPath(".") & "\" & strFile
   End If
End Function
0
 
LVL 29

Expert Comment

by:Göran Andersson
ID: 6440137
...and maybe replace / with \ in the name, if the file system is picky...

Function GetPath(ByVal strFile)
  strFile=Replace(strFile,"/","\")
  If Left(strFile,1)="/" Then
     GetPath=MapPath("/") & strFile
  Else
     GetPath=MapPath(".") & "\" & strFile
  End If
End Function
0
 
LVL 1

Author Comment

by:maytawn
ID: 6443349
AlfaNoMore & Ixeus thanks for the suggestions, but neither Server.HTMLEncode nor Server.URLPathEncode work in this case.  I am checking for the existance of a file and if the file name gets converted to have percent signs in it then it will not propperly find the file even if it exits.
0
 
LVL 1

Accepted Solution

by:
Computer101 earned 0 total points
ID: 6716633
Experts, thoughts on closing this out?

Split, delete?

Thank you
Computer101
Community Support Moderator
0
 
LVL 9

Expert Comment

by:AlfaNoMore
ID: 6717251
Points split between me and lxeus?

We don't know what the reasons are for this not working on maytawn's machine, as they never reported the error!
0
 
LVL 2

Expert Comment

by:Ixeus
ID: 6717267
Wow, long time ago, I totally forgot about this question lol

Yeah that would be nice, hopefully he gets this mail and does something.

-Ix
0
 
LVL 2

Expert Comment

by:Ixeus
ID: 6717273
Member Name maytawn
Date Account Created 02/25/00
Expert Points 0

Questions Asked 2
Last 10 Grades Given  
Question Grading Record 0 Answers Graded / 0 Answers Received
Answers  
Questions Answered 0
Last 10 Grades Received  

Do you think we'll get the points?

-Ixeus
0
 
LVL 9

Expert Comment

by:AlfaNoMore
ID: 6717295
salright, Computer101 will give us the points :-)
0
 
LVL 2

Expert Comment

by:Ixeus
ID: 6717302
That's great :)

 Hate it when people do this.  They abuse a good system... augh.

Anyway, thanks ahead of time.
0
 
LVL 1

Author Comment

by:maytawn
ID: 6722144
Please award 50 pts to AlfaNoMore and 50 pts to Ixeus.  Neither of their answers actually solved my problem... I had to solve it a different way.  But they were helpful so I would like to award the points to them.

Thanks
0
 
LVL 1

Expert Comment

by:Computer101
ID: 6730119
Questions for the 2 experts posted in this topic area.

Thank you
Computer101
Community Support Moderator
0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I recently decide that I needed a way to make my pages scream on the net.   While searching around how I can accomplish this I stumbled across a great article that stated "minimize the server requests." I got to thinking, hey, I use more than one…
Hello, all! I just recently started using Microsoft's IIS 7.5 within Windows 7, as I just downloaded and installed the 90 day trial of Windows 7. (Got to love Microsoft for allowing 90 days) The main reason for downloading and testing Windows 7 is t…
This course is ideal for IT System Administrators working with VMware vSphere and its associated products in their company infrastructure. This course teaches you how to install and maintain this virtualization technology to store data, prevent vuln…
Visualize your data even better in Access queries. Given a date and a value, this lesson shows how to compare that value with the previous value, calculate the difference, and display a circle if the value is the same, an up triangle if it increased…

719 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question