Uploaded image for project: 'Wicket'
  1. Wicket
  2. WICKET-4934

DownloadLink uses wrong encoding for spaces/non-ASCII characters

    XMLWordPrintableJSON

    Details

    • Type: Improvement
    • Status: Resolved
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: 6.4.0
    • Fix Version/s: 7.0.0-M1
    • Component/s: wicket
    • Labels:
    • Environment:
      IE7/8, FF 17.0.1, Chrome 23

      Description

      When downloading a file with spaces and non-ASCII characters in the filename using DownloadLink, all browsers I tested show a wrong filename in the file download dialog.

      For a file named Test 'ä'.txt, I got the following output from different browsers:
      IE: Test+'ä'.txt
      FF: Test+%27%C3%A4%27.txt
      Chrome: Test+%27ä%27.txt

      I have attached a patch that fixes the issue for me. The problem is that
      a) the used URL encoding is wrong. PATH encoding, not QUERY encoding is required
      b) only IE needs the filename to be encoded, other browsers seem to work with the original name

      See e.g. http://stackoverflow.com/questions/93551/how-to-encode-the-filename-parameter-of-content-disposition-header-in-http for a discussion of the underlying issue.

      Note: I do not believe the attached patch is the optimal fix for this issue. I would prefer removing the encoding handling from DownloadLink and putting it into AbstractResource.setResponseHeaders(), so other components using attachments benefit, too.

        Attachments

        1. WICKET-4934.patch
          4 kB
          Sven Meier
        2. DownloadLink.patch
          1 kB
          Matthias Piepkorn

          Issue Links

            Activity

              People

              • Assignee:
                mgrigorov Martin Tzvetanov Grigorov
                Reporter:
                mpiepkorn Matthias Piepkorn
              • Votes:
                0 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: