<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.6000.16705" name=GENERATOR></HEAD>
<BODY>
<DIV dir=ltr align=left><SPAN class=980281220-17092008><FONT face=Arial 
color=#0000ff size=2>Here's my reply to your original request&nbsp;earlier in 
the&nbsp;week.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=980281220-17092008><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN>&nbsp;</DIV>
<DIV dir=ltr align=left><SPAN class=980281220-17092008><FONT face=Arial 
color=#0000ff size=2>I've used the Indy library that comes with Delphi to do 
HTTP uploads with progress notification.&nbsp; Works quite 
well.<BR>&nbsp;<BR>E.g.<BR>&nbsp;<BR>&nbsp; FHTTPClient := 
TIdHTTP.Create(nil);<BR>&nbsp; with FHTTPClient do begin<BR>&nbsp;&nbsp;&nbsp; 
ProxyParams.ProxyServer:= ProxyHost;<BR>&nbsp;&nbsp;&nbsp; ProxyParams.ProxyPort 
:= ProxyPort;<BR>&nbsp;&nbsp;&nbsp; ProxyParams.ProxyUsername := 
ProxyUsername;<BR>&nbsp;&nbsp;&nbsp; ProxyParams.ProxyPassword := 
ProxyPassword;<BR>&nbsp;&nbsp;&nbsp; OnWork := 
HTTPWorkEvent;<BR>&nbsp;&nbsp;&nbsp; OnWorkBegin := 
HTTPBeginWorkEvent;<BR>&nbsp;&nbsp;&nbsp; OnWorkEnd := 
HTTPEndWorkEvent;<BR>&nbsp; end;</FONT></SPAN></DIV>
<DIV>&nbsp;</DIV>
<DIV dir=ltr align=left><SPAN class=980281220-17092008><FONT face=Arial 
color=#0000ff size=2>I use it to upload a JPEG to a webserver running Gallery 
(<A href="http://gallery.menalto.com/">http://gallery.menalto.com/</A>) as 
follows:<BR>&nbsp;<BR>function TGalleryHelper.AddImage(const AlbumID: Integer; 
const Image: TStream; const ImageFilename, Caption, Description, Summary: 
String): TGalleryStatus;<BR>var<BR>&nbsp; Command: String;<BR>&nbsp; Response: 
String;<BR>&nbsp; ImageStream: 
TIdMultipartFormDataStream;<BR>begin<BR>&nbsp;&nbsp;&nbsp; 
...<BR>&nbsp;&nbsp;&nbsp; ImageStream := 
TIdMultiPartFormDataStream.Create;<BR>&nbsp;&nbsp;&nbsp; 
try<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImageStream.AddFormField('g2_form[cmd]', 
'add-item');<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
ImageStream.AddFormField('g2_form[protocol_version]', Format('%f', 
[PROTOCOL_VERSION]));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
ImageStream.AddFormField('g2_form[set_albumId]', Format('%d', 
[AlbumID]));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
ImageStream.AddFormField('g2_form[caption]', 
Caption);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
ImageStream.AddFormField('g2_form[force_filename]', 
ImageFilename);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
ImageStream.AddFormField('g2_form[extrafield.Summary]', 
Summary);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
ImageStream.AddFormField('g2_form[extrafield.Description]', 
Description);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
ImageStream.AddObject('g2_userfile', 'image/jpeg', Image, 
ImageFilename);<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response := 
FHTTPClient.Post(Command, ImageStream);<BR>&nbsp;&nbsp;&nbsp; 
finally<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
ImageStream.Free;<BR>&nbsp;&nbsp;&nbsp; end;<BR>&nbsp;&nbsp;&nbsp; 
...<BR>&nbsp;<BR>The events that the TIdHTTPClient class raises can be handled 
as follows:<BR>&nbsp;<BR>procedure TGalleryHelper.HTTPBeginWorkEvent(Sender: 
TObject; AWorkMode: TWorkMode; const AWorkCountMax: 
Integer);<BR>begin<BR>&nbsp;&nbsp;&nbsp; // Do something with AWorkCountMax, 
e.g. set the max value on a progress bar.<BR>end;<BR>&nbsp;<BR>procedure 
TGalleryHelper.HTTPEndWorkEvent(Sender: TObject; AWorkMode: 
TWorkMode);<BR>begin<BR>&nbsp;&nbsp;&nbsp; // You're all 
done.<BR>end;<BR>&nbsp;<BR>procedure TGalleryHelper.HTTPWorkEvent(Sender: 
TObject; AWorkMode: TWorkMode; const AWorkCount: 
Integer);<BR>begin<BR>&nbsp;&nbsp;&nbsp; // Do something with AWorkCount, e.g. 
set the progress value of a progress bar.<BR>end;<BR>&nbsp;<BR>I have all this 
running in a thread to keep my GUI nice and responsive while the upload is 
happening.<BR>&nbsp;<BR>HTH, if you've more questions, let me 
know.<BR>&nbsp;<BR>Conor</FONT></SPAN></DIV><BR>
<DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left>
<HR tabIndex=-1>
<FONT face=Tahoma size=2><B>From:</B> delphi-bounces@delphi.org.nz 
[mailto:delphi-bounces@delphi.org.nz] <B>On Behalf Of </B>Jeremy 
Coulter<BR><B>Sent:</B> Thursday, 18 September 2008 6:49 a.m.<BR><B>To:</B> 'NZ 
Borland Developers Group - Delphi List'<BR><B>Subject:</B> Re: [DUG] HTTP Upload 
Progress<BR></FONT><BR></DIV>
<DIV></DIV>
<DIV dir=ltr align=left><SPAN class=375054618-17092008><FONT face=Arial 
color=#0000ff size=2>yeah there is a bit of stuff around done in Java, but the 
last thing we need to have to do is explain to people how to install java. The 
same for flash, which is why I was heading in the native code 
direction.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=375054618-17092008><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN>&nbsp;</DIV>
<DIV dir=ltr align=left><SPAN class=375054618-17092008><FONT face=Arial 
color=#0000ff size=2>Jeremy</FONT></SPAN></DIV><BR>
<DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left>
<HR tabIndex=-1>
<FONT face=Tahoma size=2><B>From:</B> delphi-bounces@delphi.org.nz 
[mailto:delphi-bounces@delphi.org.nz] <B>On Behalf Of </B>Richard 
Vowles<BR><B>Sent:</B> 18 September 2008 05:46<BR><B>To:</B> NZ Borland 
Developers Group - Delphi List<BR><B>Subject:</B> Re: [DUG] HTTP Upload 
Progress<BR></FONT><BR></DIV>
<DIV></DIV>
<DIV dir=ltr>The way I implemented this (in a Java web server) was that once the 
form was submitted, an ajax request was fired off in the background and 
repeatedly asked the server how the file upload was progressing, and updated the 
amount of colour in a progress bar. The upload was attached to the session, 
so&nbsp; the ajax call was able to grab the info structure from the session and 
query it (as the file upload specifies how big something is and as the upload is 
happening, you can just specify in the structure how much you had received). 
<BR><BR>
<DIV class=gmail_quote>2008/9/17 Jeremy Coulter <SPAN dir=ltr>&lt;<A 
href="mailto:jscoulter@gmail.com">jscoulter@gmail.com</A>&gt;</SPAN><BR>
<BLOCKQUOTE class=gmail_quote 
style="PADDING-LEFT: 1ex; MARGIN: 0pt 0pt 0pt 0.8ex; BORDER-LEFT: rgb(204,204,204) 1px solid">
  <DIV>
  <DIV><SPAN><FONT face=Arial size=2>Hi Al, sorry this is a repeated post, as I 
  have not received any emails from the list in a week, then I got an email to 
  reconfirm my email address because the emails were meant to be 
  bouncing....which is strange because its my main email address and I have been 
  getting emails ok....anyway using gmail now.</FONT></SPAN></DIV>
  <DIV><SPAN><FONT face=Arial size=2>So, here is my post again. Appologies if 
  its already been answered.</FONT></SPAN></DIV>
  <DIV><SPAN><FONT face=Arial size=2></FONT></SPAN>&nbsp;</DIV>
  <DIV><SPAN><FONT face=Arial size=2>
  <DIV><SPAN><FONT face=Arial size=2>Hi All.</FONT></SPAN></DIV>
  <DIV><SPAN><FONT face=Arial size=2>I am wondering if anyone has seen or has 
  any Delphi code that will do an http file upload, BUT that shows you the 
  upload progress.</FONT></SPAN></DIV>
  <DIV><SPAN><FONT face=Arial size=2>I have looked at the Synapse code for doing 
  this, but it doesn't have the ability to show the 
progress.</FONT></SPAN></DIV>
  <DIV><SPAN><FONT face=Arial size=2>Why use HTTP File upload and not FTP? 
  simple answer, not every site has FTP enabled...as we have found out, and 
  email has been a bit unreliable.</FONT></SPAN></DIV>
  <DIV><SPAN><FONT face=Arial size=2>I have taken a look at the odd Java plugin 
  that does this which would be good because I could just have my app. look at a 
  webpage instead of build it into the exe, but then, no guarantees that java is 
  enabled either....sigh...the joys :-(</FONT></SPAN></DIV>
  <DIV><SPAN><FONT face=Arial size=2>OR someone might even have a brighter idea 
  ;-)</FONT></SPAN></DIV>
  <DIV><SPAN><FONT face=Arial size=2></FONT></SPAN>&nbsp;</DIV><FONT 
  color=#888888>
  <DIV><SPAN><FONT face=Arial 
  size=2>Jeremy</FONT></SPAN></DIV></FONT></FONT></SPAN></DIV></DIV><BR>_______________________________________________<BR>NZ 
  Borland Developers Group - Delphi mailing list<BR>Post: <A 
  href="mailto:delphi@delphi.org.nz">delphi@delphi.org.nz</A><BR>Admin: <A 
  href="http://delphi.org.nz/mailman/listinfo/delphi" 
  target=_blank>http://delphi.org.nz/mailman/listinfo/delphi</A><BR>Unsubscribe: 
  send an email to <A 
  href="mailto:delphi-request@delphi.org.nz">delphi-request@delphi.org.nz</A> 
  with Subject: unsubscribe<BR></BLOCKQUOTE></DIV><BR><BR clear=all><BR>-- 
<BR>---<BR>Richard Vowles, Technical Advisor<BR>Developers Inc Ltd<BR>web. <A 
href="http://www.developers-inc.co.nz">http://www.developers-inc.co.nz</A><BR>ph. 
+64-9-3600231, mob. +64-275-467747, fax. +64-9-3600384<BR>skype. rvowles, 
LinkedIn, Twitter<BR><BR><BR></DIV></BODY></HTML>