[
https://issues.apache.org/jira/browse/WICKET-5826?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14297109#comment-14297109
]
Sven Meier commented on WICKET-5826:
------------------------------------
You can already register custom mime-types with <mime-mapping> in your web.xml
and you can override Application#getMimeType(String).
Do you see the need to specify the mime-type explicitly for a single
DownloadLink?
> Add setContentType to DownloadLink
> ----------------------------------
>
> Key: WICKET-5826
> URL: https://issues.apache.org/jira/browse/WICKET-5826
> Project: Wicket
> Issue Type: Improvement
> Components: wicket
> Affects Versions: 6.18.0
> Reporter: Craig Jorgensen
> Assignee: Sven Meier
> Priority: Minor
> Labels: easyfix, newbie
> Original Estimate: 0.25h
> Remaining Estimate: 0.25h
>
> I am generating an excel file when the DownloadLink is clicked on.
> Everything worked fine when I was running locally for development (meaning
> Excel would automatically start and my excel file would be loaded) but when I
> used our webdev server, the file would get appended with an ".htm" and the
> browser would try to display the excel file which resulted in garbage on the
> screen.
> I eventually discovered that the contentType for the FileResourceStream in
> the DownloadLink::onClick() method was set to null and there is no way (that
> I know of to change it). I modified the DownloadLink slightly to allow this
> change. If there is a better way to handle this, I would like to know it.
> Otherwise, I would suggest adding my changes to the code.
> Basically, I added a private member variable.
> private String contentType = null;
> to the DownloadLink class with a getter and a setter and modified the
> onClick() method to allow me to set the FileResourceStream ContentType.
> @Override
> public void onClick()
> {
> final File file = getModelObject();
> if (file == null)
> {
> throw new IllegalStateException(getClass().getName() +
> " failed to retrieve a File object from model");
> }
> String fileName = fileNameModel != null ?
> fileNameModel.getObject() : null;
> if (Strings.isEmpty(fileName))
> {
> fileName = file.getName();
> }
> fileName = UrlEncoder.QUERY_INSTANCE.encode(fileName,
> getRequest().getCharset());
> IResourceStream resourceStream = new FileResourceStream(new
> org.apache.wicket.util.file.File(file)) {
> @Override
> public String getContentType() {
> return contentType;
> }
> };
> getRequestCycle().scheduleRequestHandlerAfterCurrent(
> new ResourceStreamRequestHandler(resourceStream)
> {
> @Override
> public void respond(IRequestCycle requestCycle)
> {
> super.respond(requestCycle);
> if (deleteAfter)
> {
> Files.remove(file);
> }
> }
> }.setFileName(fileName)
>
> .setContentDisposition(ContentDisposition.ATTACHMENT)
> .setCacheDuration(cacheDuration));
> }
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)