have yet to try coffeescript.  I know that this will compile to straight 
javascript. But I am working with ExpressJS and I doubt that the following 
code would work.

On Wednesday, October 3, 2012 4:34:37 PM UTC-4, Gustavo Machado wrote:
>
> Maybe this can help. When trying to use ajax uploader and also plain 
> forms, I found that I had to do something like this it's coffeescript):
>
>         if req.xhr
>             req.tempFile = path.join(tmp.tmpdir, req.header("x-file-name"))
>             writer = fs.createWriteStream(req.tempFile)
>             req.pipe writer
>             writer.on "close", () ->
>                 next()
>         else
>              req.tempFile = req.files[Object.keys(req.files)[0]]
>             next()
>
> Hope it helps!
> Gus
>
> On Wed, Oct 3, 2012 at 1:09 PM, BlondAngelNYC <[email protected]<javascript:>
> > wrote:
>
>> I built a restful server based on express (and express relies on 
>> formidable). I used this form to perform my test:
>> <form action="/docxv" method="post" enctype="multipart/form-data">
>>  <input type="submit" value="Upload">
>>  <input type="file" name="uploadfile">
>> </form>
>>  
>> However customer wants the REST client to send the file to the restful 
>> server *WITHOUT* using multipart/form-data.  So I changed the form to be 
>> this:
>> <form action="/docxv" method="post">
>>  <input type="submit" value="Upload">
>>  <input type="file" name="uploadfile">
>> </form>
>>  
>> That way, the form is sent as UUEncoded instead of multipart.  
>>  
>> My restful server javascript code (I am listing only the important bits):
>> var app = express();
>> app.configure(function () {
>>   app.use(express.bodyParser({keepExtensions: true, hash:'md5' }));
>>   app.use(express.methodOverride());
>>   app.use(app.router);
>>   app.use(express.static(path.join(application_root, "public")));
>>   app.use(express.errorHandler({ dumpExceptions: true, showStack: true 
>> }));
>> });
>> //router POST /docxv (upload a file and generate a new ID)
>> app.post(uploadform, function (req, res){
>>   uploadfileMultipart(req, res, 0);
>> });
>> //start the server.
>> app.listen(port);
>> logger.info('Server running on port ' + port);
>> //from POST router
>> function uploadfileMultipart(req, res, id) {
>>  var keys = Object.keys(req.files);
>>  var currentFile = req.files[keys[0]];
>>  var data = fs.readFileSync(currentFile.path,, 'base64'); 
>>  //...etc...
>>  
>> }
>>  
>>  
>> The problem is -- when changing from multipart to non-multipart, the 
>> req.files parameter no longers works correctly.   So, I was thinking that I 
>> should try to get the raw data from request but I don't have an easy way to 
>> do that...  However I found tantalizing tidbits but no solid examples.  One 
>> such tidbit:
>>  
>> http://steelballsafety.wordpress.com/2012/01/25/express-rawbody/
>> So I added that to my code like this within the app.configure snippet:
>> app.configure(function () {
>>   app.use(function(req, res, next) {
>>     var data='';
>>     req.setEncoding('utf8');
>>     req.on('data', function(chunk) {
>>      data += chunk;
>>     });
>>     req.on('end', function() {
>>      req.rawBody=data;
>>      next();
>>     });
>>   });
>>   app.use(app.router);
>>   app.use(express.static(path.join(application_root, "public")));
>>   app.use(express.errorHandler({ dumpExceptions: true, showStack: true 
>> }));
>> });
>>  
>> Unfortunately, when running this, either it hangs (when 
>> using UUEncode) or that req.rawBody is undefined (when using multipart).  I 
>> am a noob, and I *did* search but not much luck.  I know about the 
>> incoming.onForm function, but there are no solid examples for me to follow 
>> while using ExpressJS (which in turn uses Formidable).
>>  
>> Any help would be appreciated.
>>
>> -- 
>> Job Board: http://jobs.nodejs.org/
>> Posting guidelines: 
>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
>> You received this message because you are subscribed to the Google
>> Groups "nodejs" group.
>> To post to this group, send email to [email protected]<javascript:>
>> To unsubscribe from this group, send email to
>> [email protected] <javascript:>
>> For more options, visit this group at
>> http://groups.google.com/group/nodejs?hl=en?hl=en
>>
>
>

-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

Reply via email to