Solved

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

Posted on 2001-08-30
24
391 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
  • 10
  • 6
  • 2
  • +3
24 Comments
 
LVL 2

Expert Comment

by:Ixeus
Comment Utility
Server.MapPath(Server.htmlencode("c:\test, test.txt"))

~Ixeus

(think this will work?)
0
 
LVL 9

Expert Comment

by:AlfaNoMore
Comment Utility
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
Comment Utility
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 2

Expert Comment

by:Ixeus
Comment Utility
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
Comment Utility
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
Comment Utility
Can we use Server.MapPath("test" & chr(44) & " test.txt")

?

Dave
0
 
LVL 2

Expert Comment

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

did it?

0
 
LVL 19

Expert Comment

by:daveamour
Comment Utility
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
Comment Utility
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
Comment Utility
p.s. I think he went to bed...

0
 
LVL 9

Expert Comment

by:AlfaNoMore
Comment Utility
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
Comment Utility
And maytawn... WAKE UP!!!!
0
How to improve team productivity

Quip adds documents, spreadsheets, and tasklists to your Slack experience
- Elevate ideas to Quip docs
- Share Quip docs in Slack
- Get notified of changes to your docs
- Available on iOS/Android/Desktop/Web
- Online/Offline

 
LVL 2

Expert Comment

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

guess yours then
0
 
LVL 29

Expert Comment

by:Göran Andersson
Comment Utility
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
Comment Utility
...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
Comment Utility
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
Comment Utility
Experts, thoughts on closing this out?

Split, delete?

Thank you
Computer101
Community Support Moderator
0
 
LVL 9

Expert Comment

by:AlfaNoMore
Comment Utility
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
Comment Utility
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
Comment Utility
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
Comment Utility
salright, Computer101 will give us the points :-)
0
 
LVL 2

Expert Comment

by:Ixeus
Comment Utility
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
Comment Utility
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
Comment Utility
Questions for the 2 experts posted in this topic area.

Thank you
Computer101
Community Support Moderator
0

Featured Post

Enabling OSINT in Activity Based Intelligence

Activity based intelligence (ABI) requires access to all available sources of data. Recorded Future allows analysts to observe structured data on the open, deep, and dark web.

Join & Write a Comment

Suggested Solutions

I have helped a lot of people on EE with their coding sources and have enjoyed near about every minute of it. Sometimes it can get a little tedious but it is always a challenge and the one thing that I always say is:  The Exchange of information …
Have you ever needed to get an ASP script to wait for a while? I have, just to let something else happen. Or in my case, to allow other stuff to happen while I was murdering my MySQL database with an update. The Original Issue This was written…
This demo shows you how to set up the containerized NetScaler CPX with NetScaler Management and Analytics System in a non-routable Mesos/Marathon environment for use with Micro-Services applications.
This video demonstrates how to create an example email signature rule for a department in a company using CodeTwo Exchange Rules. The signature will be inserted beneath users' latest emails in conversations and will be displayed in users' Sent Items…

763 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

Need Help in Real-Time?

Connect with top rated Experts

9 Experts available now in Live!

Get 1:1 Help Now