oh, now you tell me!

HA! 

Well, I can see it is a smattering of logic with raw-wo'ish style code, but it 
did just 'function' for me- so at least I have something to work off from.

from that, I add the attachment to the eo I want and save the context.

I would not mind cleaning it up, if there's a better implementation somewhere 
about.

On May 3, 2011, at 1:21 PM, Mike Schrag wrote:

> btw, most of this code is duplicated (and probably less optimally impl'd) in 
> ERXFileUtilities methods … so .. you know .. don't copy this.
> 
> ms
> 
> On May 3, 2011, at 12:39 PM, Pascal Robert wrote:
> 
>> 
>> Le 2011-05-03 à 12:35, Mike Schrag a écrit :
>> 
>>> if you can guarantee small data, and you have some level of confidence that 
>>> your service can't be abused, file uploading into an NSData is maybe OK … 
>>> otherwise you should be using the multipart request file upload API's in 
>>> WO. You'll have to do a little plumbing yourself.
>> 
>> As (coming from one of Apple example apps):
>> 
>>     WOMultipartIterator mpI = request().multipartIterator();
>>     if (mpI == null) {
>>       throw new IllegalStateException("Could not get the 
>> WOMultipartIterator. Verify that the WOForm's 'enctype' binding is set to 
>> 'multipart/form-data'");
>>     }
>> 
>>     WOMultipartIterator.WOFormData wfd = null;
>>     while (true) {
>>       wfd = mpI.nextFormData();
>>       if (wfd != null) break;
>>       if 
>> ("thefile".equals(wfd.contentDispositionHeaders().valueForKey("name"))) 
>> break;
>>     }
>> 
>>     if ( (wfd != null) && (wfd.isFileUpload()) ) {
>>       // Get the filename information from the request
>>       NSDictionary contentDispHeaders = wfd.contentDispositionHeaders();
>>       String aFileName = (String) contentDispHeaders.valueForKey("filename");
>> 
>>       // Get just the name for the uploaded file from aFileName.
>>       String fileName = null;
>>       fileName = NSPathUtilities.lastPathComponent( aFileName );
>>       String outputFilePath = new String("/tmp" + File.separator + fileName 
>> );
>> 
>>       // Write the file out to the location
>>       if ((fileName!=null) && (fileName.length()>0)) {
>>         try {
>>           InputStream wfdIs = wfd.formDataInputStream();
>>           FileOutputStream fileOutputStream = new 
>> FileOutputStream(outputFilePath);
>> 
>>           // This will use a 1MB buffer to transfer chunks of data from the 
>> Client to the Disk
>>           int read = 0;
>>           byte[] buffer = new byte[1024 * 1024]; // 1MB buffer
>>           do {
>>             read = wfdIs.read(buffer);
>>             if (read != -1) {
>>               fileOutputStream.write(buffer, 0, read);
>>             } else {
>>               break;
>>             }
>>           } while (read != -1);
>> 
>>           fileOutputStream.flush();
>>           fileOutputStream.close();
>> 
>>         } catch (IOException e) {
>>           NSLog.err.appendln("Error writing file: " + e);
>>         }
>> } else {
>>         // fileName == null or length 0
>>         NSLog.out.appendln( "No File Uploaded" );
>>       }
>>     } else {
>>       // wfd == null means that there was no file uploaded.
>>       NSLog.out.appendln( "No File Uploaded" );
>>     }
>> 
>>> ms
>>> 
>>> On May 3, 2011, at 12:31 PM, Jesse Tayler wrote:
>>> 
>>>> Mike -
>>>> 
>>>> Oh, thanks, and I probably don't want to, but I didn't see the ERRestRoute 
>>>> I kinda expected?
>>>> 
>>>> I just put image data (NSData) into the form on my client app, and figured 
>>>> I'd get it out of the form on the server.
>>>> 
>>>> What's my best rout to implement this type of file upload, given that my 
>>>> model and eo's work ok for the web client already.
>>>> 
>>>> I'm just going from iphone to WO, as I'm sure many of us are.
>>>> 
>>>> 
>>>> On May 3, 2011, at 12:22 PM, Mike Schrag wrote:
>>>> 
>>>>> write it to a file … you probably don't ever want file uploads into 
>>>>> NSData's, btw.
>>>>> 
>>>>> ms
>>>>> 
>>>>> On May 3, 2011, at 12:17 PM, Jesse Tayler wrote:
>>>>> 
>>>>>> Thanks Henrique,
>>>>>> 
>>>>>> Ah, a processor makes sense. I use "S3" and I'm just getting Form-values 
>>>>>> for the filename and nsdata.
>>>>>> 
>>>>>> What I can see is an API with a java.io.File, and not the NSData 
>>>>>> "posterData" which I got from the form values?
>>>>>> 
>>>>>>          NSData posterData = 
>>>>>> (NSData)formValuesDictionary.valueForKeyPath("poster"); 
>>>>>>          ERAttachment attachment = 
>>>>>> ERAttachmentProcessor.processorForType("s3").process(editingContext(), 
>>>>>> posterData, (String)dic.valueForKeyPath("filename"));
>>>>>> 
>>>>>> Am I following you correctly in that I should use this S3 processor API 
>>>>>> ? I guess I'd have to write the NSData to a temp file?
>>>>>> 
>>>>>> Or is there an API I'm confusing which would handle the NSData I get 
>>>>>> from the form?
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> On May 3, 2011, at 7:50 AM, Henrique Prange wrote:
>>>>>> 
>>>>>>> Hi Jesse,
>>>>>>> 
>>>>>>> ERAttachment is an abstract class. You can't instantiate it using the 
>>>>>>> createERAttachment method.
>>>>>>> 
>>>>>>> You should create the attachment using the ERAttachmentProcessor 
>>>>>>> instead:
>>>>>>> 
>>>>>>> ERAttachment attachment = 
>>>>>>> ERAttachmentProcessor.processorForType(storageType).process(editingContext,
>>>>>>>  uploadedFile, originalFileName, mimeType, configurationName, ownerID);
>>>>>>> 
>>>>>>> Cheers,
>>>>>>> 
>>>>>>> Henrique
>>>>>>> 
>>>>>>> On 02/05/2011, at 15:30, Jesse Tayler wrote:
>>>>>>> 
>>>>>>>> I'm trying to create an ERAttachment via ERRest, 
>>>>>>>> 
>>>>>>>> I didn't see an ERRestRoute for uploading file attachments but maybe 
>>>>>>>> that's what I'm missing?
>>>>>>>> 
>>>>>>>> I get a creation error while trying to create ERAttachment, and I 
>>>>>>>> realize I likely should be creating the ERAttachmentData object first, 
>>>>>>>> or more likely, find the ERRestRoute that's best for uploading a new 
>>>>>>>> file attachment?
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>>                NSData posterData = 
>>>>>>>> (NSData)dic.valueForKeyPath("poster");
>>>>>>>>                ERAttachment attachment = 
>>>>>>>> ERAttachment.createERAttachment(editingContext(), true, new 
>>>>>>>> NSTimestamp(), (String)dic.valueForKeyPath("mimetype"), 
>>>>>>>> (String)dic.valueForKeyPath("filename"), false, sizeInteger, 
>>>>>>>> webPathString));
>>>>>>>>                user().setPoster(attachment);
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> _______________________________________________
>>>>>>>> Do not post admin requests to the list. They will be ignored.
>>>>>>>> Webobjects-dev mailing list      ([email protected])
>>>>>>>> Help/Unsubscribe/Update your Subscription:
>>>>>>>> http://lists.apple.com/mailman/options/webobjects-dev/hprange%40gmail.com
>>>>>>>> 
>>>>>>>> This email sent to [email protected]
>>>>>>> 
>>>>>>> _______________________________________________
>>>>>>> Do not post admin requests to the list. They will be ignored.
>>>>>>> Webobjects-dev mailing list      ([email protected])
>>>>>>> Help/Unsubscribe/Update your Subscription:
>>>>>>> http://lists.apple.com/mailman/options/webobjects-dev/jtayler%40oeinc.com
>>>>>>> 
>>>>>>> This email sent to [email protected]
>>>>>>> 
>>>>>> 
>>>>>> _______________________________________________
>>>>>> Do not post admin requests to the list. They will be ignored.
>>>>>> Webobjects-dev mailing list      ([email protected])
>>>>>> Help/Unsubscribe/Update your Subscription:
>>>>>> http://lists.apple.com/mailman/options/webobjects-dev/mschrag%40pobox.com
>>>>>> 
>>>>>> This email sent to [email protected]
>>>>> 
>>>>> 
>>>> 
>>> 
>>> _______________________________________________
>>> Do not post admin requests to the list. They will be ignored.
>>> Webobjects-dev mailing list      ([email protected])
>>> Help/Unsubscribe/Update your Subscription:
>>> http://lists.apple.com/mailman/options/webobjects-dev/probert%40macti.ca
>>> 
>>> This email sent to [email protected]
>> 
> 

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to