Firstly, it's dangerous to hold a reference to an UploadedFile instance after the request that created it has reached end of life. You must read the InputStream whilst the request is live and store it somewhere (either in a database, a blobstore or as a byte array in the HTTPSession etc).
If you'd like Tapestry to handle a different asset type, you might find this post interesting. http://stackoverflow.com/questions/16914673/serve-images-outside-web-application/16918073#16918073 Eg you could create an "asset:blobstore" or a "asset:session" asset prefix.