You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Petr Janata <pe...@gmail.com> on 2013/06/05 00:01:47 UTC
How to add a link to a file stored in directory?
Hi,
thanks for links with ideas. I am new in Tapestry I use Example
App<http://jumpstart.doublenegative.com.au/jumpstart/theapp/login>
from
Jumpstart tutorial . I added File
Upload<http://jumpstart.doublenegative.com.au/jumpstart/examples/javascript/fileupload>
to
Example App and HSQL table for uploaded file names. In Example App is
used Protecting
Pages<http://jumpstart.doublenegative.com.au/jumpstart/examples/infrastructure/protectingpages>
and
I can not download uploaded file by simple href even if I am logged in as a
admin user.
How to allow to download file from upload-path?
I use simple link in tml file
<a t:type="eventlink" t:event="returnstreamresponse" href="#">download</a>
and I also added onReturnStreamResponse into java file from jumpstart
tutorial from this link.
StreamResponse onReturnStreamResponse() {
return new StreamResponse() {
InputStream inputStream;
@Override
public void prepareResponse(Response response) {
ClassLoader classLoader =
Thread.currentThread().getContextClassLoader();
inputStream =
classLoader.getResourceAsStream("regoznapp/enterprise/src/main/resources/return.txt");
// Set content length to prevent chunking - see
//
http://tapestry-users.832.n2.nabble.com/Disable-Transfer-Encoding-chunked-from-StreamResponse-td5269662.html#a5269662
try {
response.setHeader("Content-Length", "" +
inputStream.available());
}
catch (IOException e) {
// Ignore the exception in this simple example.
}
}
@Override
public String getContentType() {
return "text/plain";
}
@Override
public InputStream getStream() throws IOException {
return inputStream;
}
};
}
Petr
Re: How to add a link to a file stored in directory?
Posted by Geoff Callender <ge...@gmail.com>.
1. What happens? Is an exception thrown?
2. If you upload to the file system, like the jumpstart example does; then you should download from the file system - but your example, below, is downloading from a path relative to the classpath of the web app. Try this instead:
inputStream = new FileInputStream(myFilePath);
Geoff
On 05/06/2013, at 8:01 AM, Petr Janata wrote:
> Hi,
>
> thanks for links with ideas. I am new in Tapestry I use Example
> App<http://jumpstart.doublenegative.com.au/jumpstart/theapp/login>
> from
> Jumpstart tutorial . I added File
> Upload<http://jumpstart.doublenegative.com.au/jumpstart/examples/javascript/fileupload>
> to
> Example App and HSQL table for uploaded file names. In Example App is
> used Protecting
> Pages<http://jumpstart.doublenegative.com.au/jumpstart/examples/infrastructure/protectingpages>
> and
> I can not download uploaded file by simple href even if I am logged in as a
> admin user.
>
> How to allow to download file from upload-path?
>
> I use simple link in tml file
>
> <a t:type="eventlink" t:event="returnstreamresponse" href="#">download</a>
>
> and I also added onReturnStreamResponse into java file from jumpstart
> tutorial from this link.
>
> StreamResponse onReturnStreamResponse() {
> return new StreamResponse() {
> InputStream inputStream;
>
> @Override
> public void prepareResponse(Response response) {
> ClassLoader classLoader =
> Thread.currentThread().getContextClassLoader();
> inputStream =
> classLoader.getResourceAsStream("regoznapp/enterprise/src/main/resources/return.txt");
>
> // Set content length to prevent chunking - see
> //
> http://tapestry-users.832.n2.nabble.com/Disable-Transfer-Encoding-chunked-from-StreamResponse-td5269662.html#a5269662
>
> try {
> response.setHeader("Content-Length", "" +
> inputStream.available());
> }
> catch (IOException e) {
> // Ignore the exception in this simple example.
> }
> }
>
> @Override
> public String getContentType() {
> return "text/plain";
> }
>
> @Override
> public InputStream getStream() throws IOException {
> return inputStream;
> }
> };
> }
>
> Petr
Re: How to add a link to a file stored in directory?
Posted by "mailinglist@j-b-s.de" <ma...@j-b-s.de>.
Hi Petr!
You are really refering to a file in your src directory? When you use maven to build it the file is copied to target/ and you access it simply by "return.txt" using the classloader because target/resources is stripped when building the jar/war.
Set a break point and check if you really got an inputstream. You can also try to get the URL first which is null in case nothing found.
Jens
Sent from my iPhone
On 05.06.2013, at 00:01, Petr Janata <pe...@gmail.com> wrote:
> Hi,
>
> thanks for links with ideas. I am new in Tapestry I use Example
> App<http://jumpstart.doublenegative.com.au/jumpstart/theapp/login>
> from
> Jumpstart tutorial . I added File
> Upload<http://jumpstart.doublenegative.com.au/jumpstart/examples/javascript/fileupload>
> to
> Example App and HSQL table for uploaded file names. In Example App is
> used Protecting
> Pages<http://jumpstart.doublenegative.com.au/jumpstart/examples/infrastructure/protectingpages>
> and
> I can not download uploaded file by simple href even if I am logged in as a
> admin user.
>
> How to allow to download file from upload-path?
>
> I use simple link in tml file
>
> <a t:type="eventlink" t:event="returnstreamresponse" href="#">download</a>
>
> and I also added onReturnStreamResponse into java file from jumpstart
> tutorial from this link.
>
> StreamResponse onReturnStreamResponse() {
> return new StreamResponse() {
> InputStream inputStream;
>
> @Override
> public void prepareResponse(Response response) {
> ClassLoader classLoader =
> Thread.currentThread().getContextClassLoader();
> inputStream =
> classLoader.getResourceAsStream("regoznapp/enterprise/src/main/resources/return.txt");
>
> // Set content length to prevent chunking - see
> //
> http://tapestry-users.832.n2.nabble.com/Disable-Transfer-Encoding-chunked-from-StreamResponse-td5269662.html#a5269662
>
> try {
> response.setHeader("Content-Length", "" +
> inputStream.available());
> }
> catch (IOException e) {
> // Ignore the exception in this simple example.
> }
> }
>
> @Override
> public String getContentType() {
> return "text/plain";
> }
>
> @Override
> public InputStream getStream() throws IOException {
> return inputStream;
> }
> };
> }
>
> Petr
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org
Re: How to add a link to a file stored in directory?
Posted by Lance Java <la...@googlemail.com>.
Tapestry has built in support for serving classpath assets.
http://tapestry.apache.org/assets.html
Option1
TML
<a
href="${asset:classpath:regoznapp/enterprise/src/main/resources/return.txt}"
/>
Option2
Java
@Inject AssetSource assetSource;
public String getAssetUrl() {
return
assetSource.getClasspathAsset("regoznapp/enterprise/src/main/resources/return.txt",
null).toClientURL();
}
TML
<a href="${assetUrl} " />