这是我在Tapestry用户邮件列表中询问过的一个后续问题,以及Ray Nicholus回复的问题。最初的问题:
有没有人有使用FineUploader 5处理上传的Tapestry实现?
Taha的实施(tawus.wordpress.com/2011/06/25/ajax-upload-for-tapestry/)看起来很棒,但它不适合5.0版本blob及其RESTful倾向。
Ray回答的一部分:
我们的设置非常简单。我们注册了一个servlet来处理来自Fine Uploader的任何请求(例如传统端点的上传和删除请求,或者S3和Azure端点的签名和成功请求)...
如果您还有其他问题,我们会监控堆栈溢出时的精细上传器标签......
这是一个很好的信息,雷。我想做同样的事情。
问:您是否正在使用github.com/FineUploader/server-examples/tree/master/java上传的UploadReceiver.java?
问:你能和我们分享你的web.xml吗?
答案 0 :(得分:0)
回答你的问题:
问:您是否正在使用github.com/FineUploader/server-examples/tree/master/java上传的UploadReceiver.java?
这是基于Java的端点处理程序的起点。我整合Fine Uploader的任何项目可能都有类似的代码。也就是说,一个用于处理请求的类,另一个用于解释所有请求的类,以及一个专门用于解析多部分编码请求的类,这是Fine Uploader默认为文件上载发送的内容。所有这些类都适用于传统端点。如果您使用Fine Uploader S3直接上传到S3,那么s3 / S3Uploads类会更简单,因为上传请求会直接发送到S3。
问:你能和我们分享你的web.xml吗?
我的任何集成Fine Uploader的Tapestry项目中使用的web.xml都不起眼。我们在web.xml中注册了一个ServletContextListener
,其中包括将servlet类映射到相对路径。
例如,对于web.xml中的此条目:
<listener>
<listener-class>com.mydomain.SystemInit</listener-class>
</listener>
我们将有一个实现SystemInit
的{{1}}类。在那里,我们将实现一个ServletContextListener
方法将我们的Fine Uploader请求servlet映射到这样的特定路径:
contextInitialized
因此,发送到上述路径的任何请求都将命中该类。设置客户端Fine Uploader选项时请记住这一点。
在这个servlet /接收器中,我们将检查路径的结尾,确定我们正在处理的Fine Uploader请求的类型。
答案 1 :(得分:0)
不是完整的答案,但作为旁注,它有时对于Tapestry库来说有利于将servlet作为tapestry中的过滤器运行,而不是将servlet添加到servlet容器中。这有一个额外的好处,即servlet init-params可以通过MappedConfiguration提供。 tapestry-cometd和tapestry-atmosphere都可以执行此操作。
以下文件演示了如何在tapestry中运行AtmosphereServlet: