Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

General Questions

General questions about getting started with SilverStripe that don't fit in any of the categories above.

Moderators: martimiz, Sean, biapar, Willr, Ingo, swaiba, simon_w

Custom upload directory


Reply

11 Posts   3609 Views

Avatar
banal

15 November 2009 at 10:34pm (Last edited: 15 November 2009 10:36pm), Community Member, 901 Posts

Hi Aaron

Of course you're right. I didn't read your code very carefully and was under the impression that you use Folder::findOrMake($this->URLSegment) each time "onBeforeWrite" is being called. Sorry, maybe it's because of the lacking indentation ;)

Changed my code in the previous example to use 'Folder' instead of 'File'.

The onBeforeWrite function on the DataObject would simply ensure that the file is located in the designated folder (defined by it's "holder" Page).

Avatar
Double-A-Ron

15 November 2009 at 10:47pm (Last edited: 15 November 2009 10:47pm), Community Member, 604 Posts

Gotcha, cheers for that.

Yeah, it's strange. Copies from Dreamweaver to forum code blocks maintain indents. But from PHPEd to forum code blocks, the look fine, but they lose the tabs when I submit.

Cheers mate.
Aaron

Avatar
torleif2

15 September 2010 at 3:28pm Community Member, 4 Posts

Custom upload folders are set by changing the ParentID of the file. The following code will save an image to the server, and set the folder name to 'Articles', then write it to the database:

$ImageFile = new Image();
$ImageFile->setName($_FILES['Image']['name']);
$ImageFile->ParentID = Folder::findOrMake('Articles')->ID;
$ImageFile->loadUploadedImage($_FILES['MainImageID']);
$ImageFile->write();

(Note: there's a bug in SS 2.4.1 that makes loadUploadedImage() unusable. My image class is actually extends Image, with a overwritten loadUploadedImage function)