[
https://issues.apache.org/jira/browse/SLING-4694?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14539412#comment-14539412
]
Bertrand Delacretaz commented on SLING-4694:
--------------------------------------------
Thanks, the patch looks good to me, there's a few minor things to adjust but it
looks useful!
I think we might not need the MimeDetectionConstants.DETECTION_MODE service
property, as you need anyway to cast to ContentAwareMimeTypeService. That
property would have been useful if we had extended the MimeTypeService API, but
with two distinct service interfaces it's not really useful.
How about having two references in the client (SlingWebDavServlet), a required
MimeTypeService and an optional ContentAwareMimeTypeService? You can then use
the latter if present, and the former if not. And get rid of the
DETECTION_MODE, which also means no changes to the existing commons/mime module.
> Add ability to identify mime type based on file content
> -------------------------------------------------------
>
> Key: SLING-4694
> URL: https://issues.apache.org/jira/browse/SLING-4694
> Project: Sling
> Issue Type: Improvement
> Components: Servlets
> Affects Versions: JCR Webdav 2.2.2
> Reporter: Satya Deep Maheshwari
>
> *Problem description:* I am facing a problem with the mime type detection of
> a file. While debugging, I see that SlingTikaDetector.detect method is used
> for detecting the mime type of my file. See [1]. This method just seems to
> rely on the name of the file for detecting its mime type. Even though its
> passed an inputstream of the file, it does not seem to use it for mime type
> detection. So if my file name is something like xyz.tmp, it detects its mime
> type as application/octet-stream (the default) while it may actually be a png
> file. This is a common scenario with webdav clients wherein temporary files
> get created with such names while being edited.
> *Suggested Solution:*
> Quoting [~rombert]
> {quote}
> Following the discussions at SLING-1059 [1] and SLING-255 [2] I can
> infer that we more or less opted out of the 'heavy-weight' approach of
> actually parsing the input stream. Not sure if we want to revisit that
> TBH. At any rate, our MimeTypeService does not have an API for getting
> the file content based on the input stream.
> I think though there's a way around it, but only at the code level.
> The org.apache.sling.jcr.webdav.impl.helper.SlingResourceConfig class
> hardcodes the Detector implementation to be a SlingTikaDetector.
> I think it is worthwile to raise a Jira issue for this and it would
> definitely expedite the fix if you're willing to submit a patch / pull
> request. I think it can be as simple as adding a @Reference to a Tika
> Detector to the SlingWebDavServlet and then passing that to the
> SlingServletConfig.
> Cheers,
> Robert
> [1]: https://issues.apache.org/jira/browse/SLING-1059
> [2]: https://issues.apache.org/jira/browse/SLING-255
> {quote}
> Related mailing-list thread on this:
> http://apache-sling.73963.n3.nabble.com/mime-type-detection-td4050586.html
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)