The exact exception/error-message your'e reporting doesn't show up in Magento's source code as a string, so I'm not 100% sure I'm pointing you in the right direction here.
That said, most uploads in magento are handled by the save
method on an instantiated object of the Varien_File_Uploader
class.
File: lib/Varien/File/Uploader.php
public function save($destinationFolder, $newFileName=null)
{
$this->_validateFile();
if( $this->_allowCreateFolders ) {
$this->_createDestinationFolder($destinationFolder);
}
if( !is_writable($destinationFolder) ) {
throw new Exception('Destination folder is not writable or does not exists.');
}
$result = false;
$destFile = $destinationFolder;
$fileName = ( isset($newFileName) ) ? $newFileName : self::getCorrectFileName($this->_file['name']);
if( $this->_enableFilesDispersion ) {
$fileName = $this->correctFileNameCase($fileName);
$this->setAllowCreateFolders(true);
$this->_dispretionPath = self::getDispretionPath($fileName);
$destFile.= $this->_dispretionPath;
$this->_createDestinationFolder($destFile);
}
if( $this->_allowRenameFiles ) {
$fileName = self::getNewFileName(self::_addDirSeparator($destFile).$fileName);
}
$destFile = self::_addDirSeparator($destFile) . $fileName;
$result = move_uploaded_file($this->_file['tmp_name'], $destFile);
if( $result ) {
chmod($destFile, 0777);
if ( $this->_enableFilesDispersion ) {
$fileName = str_replace(DIRECTORY_SEPARATOR, '/', self::_addDirSeparator($this->_dispretionPath)) . $fileName;
}
$this->_uploadedFileName = $fileName;
$this->_uploadedFileDir = $destinationFolder;
$result = $this->_file;
$result['path'] = $destinationFolder;
$result['file'] = $fileName;
return $result;
} else {
return $result;
}
}
Throw some debugging statements into this function to see if
It's the one being called and is failing
To figure out why it might be returning false (i.e., not uploading the file)