httpd-apreq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Franky Braem <f.br...@skynet.be>
Subject Re: File upload
Date Fri, 24 Feb 2006 20:31:01 GMT
Joe Schaefer wrote:
> Franky Braem <f.braem@skynet.be> writes:
> 
> 
>>Is there a step by step tutorial on how to implement a file upload in
>>an Apache module with apreq2? I'm trying to write mod_wxjs (JavaScript
>>and wxWidgets as server side script, more info on
>>wxjs.sourceforge.net) and I want to add a file upload functionality
>>(something like php). 
>>
>>
> 
> 
> Something like this:
> 
>   #include "httpd.h"
>   #include "apreq_module.h"
>   #include "apreq_param.h"
>   #include "apreq_module_apache2.h"
>   #include "apreq_util.h"
> 
>   apreq_handle_t *req;
>   apreq_param_t *param;
>   request_rec *r;
> 
>   ... initialize r ...
> 
>   req = apreq_handle_apache2(r);
> 
>   param = apreq_body_get(req, "name of upload widget");
> 
>   if (param == NULL) {
>      /* error: missing field */
>   }
>   else if (param->upload == NULL) {
>      /* error: widget not an upload */
>   }
>   else {
> 
>      /* have upload field */
> 
>      apr_table_t *info;      /* upload headers */
>      apr_bucket_brigade *bb; /* upload contents */
>      apr_bucket_t *e;
> 
>      info = param->info;
>      /* DO SOMETHING with info */
> 
>      bb = apr_brigade_create(r->pool, r->connection->bucket_alloc);
>      apreq_brigade_copy(bb, param->upload);
> 
>      while ((e = APR_BRIGADE_FIRST(bb)) != APR_BRIGADE_SENTINEL(bb)) {
>          apr_size_t dlen;
>          const char *data;
>          apr_status_t s;
>          
>          /* apr_bucket_read() has side effects on spool buckets, which
>           * is why we read from a copy of the brigade - to conserve memory
>           */
>          s = apr_bucket_read(e, &data, &dlen, APR_BLOCK_READ);
> 
>          if (s != APR_SUCCESS) {
>              /* error: bad bucket read */
>              break;
>          }
>          else {
>              /* DO SOMETHING with data, dlen */
>          }
> 
>          apr_bucket_delete(e);
>      }
> 
>   }
> 
> 

I'm trying to integrate apreq2 into wxJS, but I get the following crash 
when trying to handle a request:

 >	apreq2.dll!apreq_filter_relocate(ap_filter_t * f=0x00000000)  Line 48 
+ 0x3 bytes	C
  	apreq2.dll!get_apreq_filter(apreq_handle_t * handle=0x05b20938)  Line 
45 + 0xc bytes	C
  	apreq2.dll!apreq_handle_apache2(request_rec * r=0x015aaad0)  Line 435 
+ 0x9 bytes	C
  	mod_wxjs.dll!wxjs_handler(request_rec * r=0x015aaad0)  Line 287 + 
0x9 bytes	C++
  	libhttpd.dll!_ap_run_handler@4()  + 0x1f bytes	


Is it possible to build libapreq2 with Visual Studio Express 2005?


Mime
View raw message