(Sorry, I live on the East Coast and it was very late here when we last 
corresponded. I'm awake again.)


Yes, you have indeed answered the question, and I appreciate your prompt, 
courteous and highly informative input VERY much!

Actually, at one point earlier as stuff wasn't working as I expected, I did 
think "Maybe in this context 'download' doesn't mean what I think it 
means.......?", and it now turns out I was right only in that suspicion. I 
was wrong about everything else. I was proceeding from a more mainstream 
caveman viewpoint of what the term "download" means (ugh! file go from 
machine to me, human! Me get Free Gift from Above). In this case it's 
really kinda more of a "sideload", or something I'd just call a "fetch".

What I find the most interesting is this: despite my flawed understanding 
of what the manual meant here by the term "download", my interpretation of 
how the download action would *behave *under condition X (that condition 
being me feeding the action a bare filename pointing to a file buried 
within the W2P "images" app dir structure) *was still correct*, and it 
still behaved as I *believed *it would based on reading its code (though *that 
*was apparently flawed as well). When I fed the action a filename as per 
the instructions on P.101, it did indeed go looking for and finding the 
uploaded image file, and served it on up to me as a download. Talk about 
faith in action!

And the situation indeed matched your final comment about such a thing 
requiring a user interaction, client-side. *I* fed it a filename and, *
Behold!*

Well, I reckon The Server helps them clients what helps themselfs!

:)

In any case, SINCERE thanks once again. You == The Best!



On Thursday, July 18, 2013 4:17:11 AM UTC-4, Massimo Di Pierro wrote:
>
> Normally if you have
>
> <img width="200px" src="https://www.google.com/images/srpr/logo4w.png"; />
>
> This instructs your browser to download and show the image logo4w.png.
> In your case 
>
> <img width="200px" src="{{=URL('download', args=image.file)}}" />
>
> works the same way but the URL is not
>
> https://www.google.com/images/srpr/logo4w.png
>
> but
>
> /<app>/<controller>/download/<image.file>
>
> From the point of view of the server the image is "downloaded" and 
> visualized (is it not?).
> What you expect is your browser to take a different action and save the 
> image in your Downloads folder. That would be a client-side action and it 
> must be triggered by user interaction or coded into the HTML with JS.
>
> Did I answer the question?
>
>
> On Thursday, 18 July 2013 02:53:49 UTC-5, REM wrote:
>>
>> It seems that I am trying to understand exactly what the "download" 
>> action is intending to do, because I thought that it would provide some 
>> sort of a method/link/URL for a visitor to download the uploaded image 
>> currently being displayed, and that this method/link/URL would have 
>> something to do with the display of the uploaded image on the show.html 
>> page (such as a traditional image link of the type you responded with). If 
>> that is what is supposed to happen, then I am getting a different result. 
>> The app is only displaying the uploaded image via the show.html page and no 
>> apparent way to ever "download" it with the download action.
>>
>> P.101 of the 5th edition manual states:
>>
>> *The "download" action expects a filename in request.args(0), builds a 
>> path to the location where that file is supposed to be, and sends it back 
>> to the client.*
>>
>> I was only able to trigger this behavior by sending the download action 
>> the expected filename *manually*. I did this by looking up the filename 
>> which the uploaded image had been given in 
>> /applications/images/uploads/<filename>, then I sent this filename to the 
>> download action by pointing the browser to
>>
>> http://localhost....(etc)/images/default/download/<filename>
>>
>> At this point, sure enough, the browser opened up a standard download 
>> window and I was able to download the uploaded image as I expected the 
>> download action to behave from the start. The point is that I saw no other 
>> means of getting this action to trigger because, unless I have mistyped 
>> something in the above quoted app code from the manual, the images app 
>> never triggers the download action from show.html or elsewhere. It appears 
>> to never send an uploaded image filename to the download action in any 
>> request from the show.html page (or anywhere else) such that the browser 
>> starts a standard download of the uploaded image as expected - and as I was 
>> able to accomplish manually.
>>
>> Therefore, I was wondering if I had found a bug, or mistyped something, 
>> or maybe I'm just not seeing something which is obvious to others. 
>>
>> I don't presently see how the download action operates automatically via 
>> the actions described in the code for the images app, but I can get the 
>> download action to *function *by doing something manually which the 
>> manual seems to be saying should be happening automatically by some other 
>> means. The only means I could see for it to happen was in the manual's code:
>>
>> <img width="200px"
>>      src="{{=URL('download', args=image.file)}}" />
>>
>> But it doesn't seem to be doing anything for me.
>>
>> Thanks very much for your assistance. I appreciate it.
>>
>>
>>
>>
>> On Thursday, July 18, 2013 3:14:41 AM UTC-4, Massimo Di Pierro wrote:
>>>
>>> I am not sure I fully understand. Are you trying to do this?
>>>
>>> <a href="{{=URL('download', args=image.file)}}"><img width="200px" 
>>> src="{{=URL('download', 
>>> args=image.file)}}" /></a>
>>>
>>>
>>>
>>> On Thursday, 18 July 2013 01:20:48 UTC-5, REM wrote:
>>>>
>>>> Hello, folks.
>>>>
>>>> I started back at the top of the manual again and I am understanding 
>>>> much more by progressing slowly and with copious notes. So far, so good. 
>>>>
>>>> However, I have come across a bit of a puzzling issue with the latter 
>>>> part of the "images" tutorial. After creating the dbases, uploading some 
>>>> images via appadmin, and then adding the app's core in default.py:
>>>>
>>>> def index():
>>>>     images = db().select(db.image.ALL, orderby=db.image.title)
>>>>     return dict(images=images)
>>>>
>>>>
>>>> def show():
>>>>     image = db.image(request.args(0,cast=int)) or redirect(URL('index'
>>>> ))
>>>>     db.post.image_id.default = image.id
>>>>     form = SQLFORM(db.post)
>>>>     if form.process().accepted:
>>>>         response.flash = 'your comment is posted'
>>>>     comments = db(db.post.image_id==image.id).select()
>>>>     return dict(image=image, comments=comments, form=form)
>>>>
>>>>
>>>> def download():
>>>>     return response.download(request, db)
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> And then creating the default/index.html:
>>>>
>>>> {{extend 'layout.html'}} 
>>>> <h1>Current Images</h1> 
>>>> <ul> 
>>>> {{for image in images:}} 
>>>> {{=LI(A(image.title, _href=URL("show", args=image.id)))}} 
>>>> {{pass}} 
>>>> </ul>
>>>>
>>>>
>>>>
>>>>
>>>> And finally, the default/show.html:
>>>>
>>>> {{extend 'layout.html'}}
>>>> <h1>Image: {{=image.title}}</h1>
>>>> <center>
>>>> <img width="200px" 
>>>>      src="{{=URL('download', args=image.file)}}" />
>>>> </center>
>>>> {{if len(comments):}}
>>>>     <h2>Comments</h2><br /><p>
>>>>     {{for post in comments:}}
>>>>         <p>{{=post.author}} says <i>{{=post.body}}</i></p>
>>>>     {{pass}}</p>
>>>> {{else:}}
>>>> <h2>No comments posted yet</h2>
>>>> {{pass}}
>>>> <h2>Post a comment</h2>
>>>> {{=form}}
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> When the app is called, it behaves as expected in every instance with 
>>>> one exception: I was figuring that, based on:
>>>>
>>>> <img width="200px" 
>>>>      src="{{=URL('download', args=image.file)}}" />
>>>>
>>>>
>>>>
>>>> When the image was displayed in the show.html view, that maybe it would 
>>>> be tagged with an embedded download link such that passing the mouse over 
>>>> the image would indicate a link and then clicking the image would trigger 
>>>> a 
>>>> download action to download the image. This does not occur. The app just 
>>>> displays the uploaded image with no apparent way to download it (aside 
>>>> from 
>>>> the usual right-click browser options). In fact, in looking at the app's 
>>>> structure, I can't see where the download action in the default.py 
>>>> controller is ever triggered, since all of that =URL('download', 
>>>> args=image.file)}} doesn't *appear* to cause any action with regard to 
>>>> the requested image which is being displayed.
>>>>
>>>> Through experimentation I discovered that I can indeed get a download 
>>>> action of the type which I *expected* to be triggered if I manually 
>>>> look up the name of the uploaded image file under 
>>>> applications/images/uploads/<filename> and then pass it to the download 
>>>> action myself in the address bar:
>>>>
>>>> http://localhost.../images/default/download/<filename>
>>>>
>>>> That's what I was expecting to happen when I clicked on the image (or 
>>>> was somehow otherwise directed to the download action), but apparently I 
>>>> was wrong to assume this...?
>>>>
>>>> In any case, how then does the download action get triggered if not by:
>>>>
>>>> <img width="200px" 
>>>>      src="{{=URL('download', args=image.file)}}" />
>>>>
>>>>
>>>>
>>>> ?
>>>>
>>>> Any pointers, corrections, directions for further reading, etc. would 
>>>> be sincerely appreciated.
>>>>
>>>>
>> On Thursday, July 18, 2013 3:14:41 AM UTC-4, Massimo Di Pierro wrote:
>>>
>>> I am not sure I fully understand. Are you trying to do this?
>>>
>>> <a href="{{=URL('download', args=image.file)}}"><img width="200px" 
>>> src="{{=URL('download', 
>>> args=image.file)}}" /></a>
>>>
>>>
>>>
>>> On Thursday, 18 July 2013 01:20:48 UTC-5, REM wrote:
>>>>
>>>> Hello, folks.
>>>>
>>>> I started back at the top of the manual again and I am understanding 
>>>> much more by progressing slowly and with copious notes. So far, so good. 
>>>>
>>>> However, I have come across a bit of a puzzling issue with the latter 
>>>> part of the "images" tutorial. After creating the dbases, uploading some 
>>>> images via appadmin, and then adding the app's core in default.py:
>>>>
>>>> def index():
>>>>     images = db().select(db.image.ALL, orderby=db.image.title)
>>>>     return dict(images=images)
>>>>
>>>>
>>>> def show():
>>>>     image = db.image(request.args(0,cast=int)) or redirect(URL('index'
>>>> ))
>>>>     db.post.image_id.default = image.id
>>>>     form = SQLFORM(db.post)
>>>>     if form.process().accepted:
>>>>         response.flash = 'your comment is posted'
>>>>     comments = db(db.post.image_id==image.id).select()
>>>>     return dict(image=image, comments=comments, form=form)
>>>>
>>>>
>>>> def download():
>>>>     return response.download(request, db)
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> And then creating the default/index.html:
>>>>
>>>> {{extend 'layout.html'}} 
>>>> <h1>Current Images</h1> 
>>>> <ul> 
>>>> {{for image in images:}} 
>>>> {{=LI(A(image.title, _href=URL("show", args=image.id)))}} 
>>>> {{pass}} 
>>>> </ul>
>>>>
>>>>
>>>>
>>>>
>>>> And finally, the default/show.html:
>>>>
>>>> {{extend 'layout.html'}}
>>>> <h1>Image: {{=image.title}}</h1>
>>>> <center>
>>>> <img width="200px" 
>>>>      src="{{=URL('download', args=image.file)}}" />
>>>> </center>
>>>> {{if len(comments):}}
>>>>     <h2>Comments</h2><br /><p>
>>>>     {{for post in comments:}}
>>>>         <p>{{=post.author}} says <i>{{=post.body}}</i></p>
>>>>     {{pass}}</p>
>>>> {{else:}}
>>>> <h2>No comments posted yet</h2>
>>>> {{pass}}
>>>> <h2>Post a comment</h2>
>>>> {{=form}}
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> When the app is called, it behaves as expected in every instance with 
>>>> one exception: I was figuring that, based on:
>>>>
>>>> <img width="200px" 
>>>>      src="{{=URL('download', args=image.file)}}" />
>>>>
>>>>
>>>>
>>>> When the image was displayed in the show.html view, that maybe it would 
>>>> be tagged with an embedded download link such that passing the mouse over 
>>>> the image would indicate a link and then clicking the image would trigger 
>>>> a 
>>>> download action to download the image. This does not occur. The app just 
>>>> displays the uploaded image with no apparent way to download it (aside 
>>>> from 
>>>> the usual right-click browser options). In fact, in looking at the app's 
>>>> structure, I can't see where the download action in the default.py 
>>>> controller is ever triggered, since all of that =URL('download', 
>>>> args=image.file)}} doesn't *appear* to cause any action with regard to 
>>>> the requested image which is being displayed.
>>>>
>>>> Through experimentation I discovered that I can indeed get a download 
>>>> action of the type which I *expected* to be triggered if I manually 
>>>> look up the name of the uploaded image file under 
>>>> applications/images/uploads/<filename> and then pass it to the download 
>>>> action myself in the address bar:
>>>>
>>>> http://localhost.../images/default/download/<filename>
>>>>
>>>> That's what I was expecting to happen when I clicked on the image (or 
>>>> was somehow otherwise directed to the download action), but apparently I 
>>>> was wrong to assume this...?
>>>>
>>>> In any case, how then does the download action get triggered if not by:
>>>>
>>>> <img width="200px" 
>>>>      src="{{=URL('download', args=image.file)}}" />
>>>>
>>>>
>>>>
>>>> ?
>>>>
>>>> Any pointers, corrections, directions for further reading, etc. would 
>>>> be sincerely appreciated.
>>>>
>>>>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to