I ran across an issue when using Uploadify within HasMany/ManyMany FileDataObjectManager fields. I would get an IO error (#2038) on the Mac platform ... but not on Windows/PC.
After trying & reading everything.. it *appears to me* that the issue is related to a character limit of flashvars on the Mac platform.
As a workaround, attached is a patch that shortens the "script" flashvar passed to the [jQuery] Uploadify plugin. In short; it removed superfluous URL info that ComplexTableFields add. E.g. it changes:
%2Fpaulickreport%2Fadmin%2FEditForm%2Ffield%2FPhotos%2FUploadifyForm%2Ffield%2FUploadedFiles%2Fupload%3Fctf%5BPhotos%5D%5Bstart%5D%3D0%26ctf%5BPhotos%5D%5Bper_page%5D%3D10%26ctf%5BPhotos%5D%5Bshowall%5D%3D0%26ctf%5BPhotos%5D%5Bsort%5D%3D%60NewsPost_Photos%SortOrder%26ctf%5BPhotos%5D%5Bsort_dir%5D%3D%26ctf%5BPhotos%5D%5Bsearch%5D%3D%26ctf%5BPhotos%5D%5Bfilter%5D%3D%26ctf%5BPhotos%5D%5Bview%5D%3D%26ctf%5BPhotos%5D%5Bonly_related%5D%3D
to
%2Fpaulickreport%2Fadmin%2FEditForm%2Ffield%2FPhotos%2FUploadifyForm%2Ffield%2FUploadedFiles%2Fupload
Below is the patch to code/UploadifyField.php
Index: www/uploadify/code/UploadifyField.php
===================================================================
--- www/uploadify/code/UploadifyField.php (revision 145)
+++ www/uploadify/code/UploadifyField.php (working copy)
@@ -418,8 +418,16 @@
if($this->form) {
if(!$this->getSetting('script')) {
- $this->setVar('script',urlencode(Director::baseURL().Director::makeRelative($this->Link('upload'))));
+ // long script strings cause IO error on Apple/Mac Flash platforms\
+ // so parse out complextablefield
+ $script = urlencode(Director::baseURL().Director::makeRelative($this->Link('upload')));
+ if($pos = strpos($script,'%3Fctf'))
+ {
+ $script = substr($script,0,$pos);
+ }
+ $this->setVar('script',$script);
+
}
if(!$this->getSetting('refreshlink')) {
$this->setVar('refreshlink', Director::baseURL().Director::makeRelative($this->Link('refresh')));