views:

69

answers:

1
function openFile(file, object) {
    var extension = file.substr( (file.lastIndexOf('.') +1) );

    var fileName = file.substr((file.lastIndexOf('/') +1), (file.length - (file.lastIndexOf('/') +1))-4);


    object.append('<img class="theimage" src="" alt="icon"/>');
    object.append('<span class="thefile"></span>');


    switch(extension) {

        case 'ppt':
            object.find('img').attr('src', 'PowerPoint-icon.png');
        break;
        case 'pdf':
            object.find('img').attr('src', 'pdficon_large.gif'); 
        break;
        case 'txt':
            object.find('img').attr('src', 'txt_icon.png'); 
        break;
        default:
            alert('error');
    }

    object.find('span.thefile').text(fileName);

};

This function runs properly on it's own but when I add it to my school's cms template it add %20 to all the spaces in fileName.

Do you think they have their own function that is doing this? What would be the purpose? For security?

+2  A: 

%20 is standard URL encoding for spaces. Whatever function is processing the spaces thinks they need to be encoded for use in a URL.

As to why it is done, it is not exactly for security. Not all systems handle spaces well; this helps in those cases, so it is considered 'safer' to URL encode spaces (among other things). For all other information see RFC 3986 s2.1 and s2.4

Sorpigal
what would the regular expression be to take out the %20. Im taking the link name from the url path, so that is why I want to get rid of it.
Adam
You don't need a regular expression for that, you just need to URL decode. There are many implementations such as http://www.webtoolkit.info/javascript-url-decode-encode.html. Pick one you like and use it.
Sorpigal