Uploaded image for project: 'Tapestry'
  1. Tapestry
  2. TAPESTRY-1227

IUploadFile implementations should be prepared for "all" file name-separator characters in getFileName()

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Critical
    • Resolution: Fixed
    • Affects Version/s: 4.1.2
    • Fix Version/s: 4.1.2
    • Component/s: tapestry-core
    • Labels:
      None
    • Environment:
      linux server, windows client

      Description

      I use the Upload component to allow files to be uploaded by users, and I have the following problem when the server and the client runs different OSs.
      1. the file to be uploaded is selected in the browser on windows (eg. C:\Képek\image.jpg)
      2. the file is uploaded
      3. the application running on linux calls IUploadFile.getFileName() and gets "C:\Képek\image.jpg" instead of the expected "image.jpg"

      The problem is with UploadPart.getFileName():

      public String getFileName()

      { File file = new File(this.getFilePath()); return file.getName(); }

      In this implementation File.getName() will use the OS's name-separator character ('/' in my case) but the uploaded file contains other characters ('
      ') instead.

      If I manually edit the path of the selected file in the file browser field from "C:\Képek\image.jpg" to "C:/Képek/image.jpg" before hitting the upload button, the upload process works fine (and luckily it seems that Windows eats '/' separators as well ). But of course this should be handled automatically.

      Probably the same problem should be handled in IUploadFile.getFilePath() as well.

      What do you think?

      Regards:
      Norbi

        Activity

        Hide
        jkuhnert Jesse Kuhnert added a comment -

        Done.. The IUpload.getFilePath() has to remain the same though, as a file path indicates the full path string + file name. The documentation for this one makes it clear already that the paths will change depending on the client platform so I'm ok with this.

        Show
        jkuhnert Jesse Kuhnert added a comment - Done.. The IUpload.getFilePath() has to remain the same though, as a file path indicates the full path string + file name. The documentation for this one makes it clear already that the paths will change depending on the client platform so I'm ok with this.

          People

          • Assignee:
            jkuhnert Jesse Kuhnert
            Reporter:
            snorbi Norbert Sándor
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development