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.

We've moved the forum!

Please use forum.silverstripe.org for any new questions (announcement).
The forum archive will stick around, but will be read only.

You can also use our Slack channel or StackOverflow to ask for help.
Check out our community overview for more options to contribute.

DataObjectManager Module /

Discuss the DataObjectManager module, and the related ImageGallery module.

Moderators: martimiz, UncleCheese, Sean, Ed, biapar, Willr, Ingo, swaiba

Mysterious Upload Directory


Go to End


3 Posts   1407 Views

Avatar
eddieconnecti

Community Member, 26 Posts

16 December 2009 at 3:48am

Got a annoying problem by writing files using onBeforeWrite into an specific custom upload folder. I have searched the forum and found some related topics, but none solved the problem i have. This is my class:

class ArticleItems extends DataObject
{

static $db = array (
"Description" => "HTMLText",
"ItemType" => "Varchar(50)"
);

static $has_one = array (
"Page" => "Page",
"ImageThumbnailFile" => "Image"
);

protected static $itemTypes = array(
"IMAGE" => "Image"
);

public function getCMSFields_forPopup()
{
return new FieldSet(
new DropdownField( "ItemType", "Type of Item", self::$itemTypes ),
new TextareaField( "Description", "Description" ),
new ImageField( "ImageThumbnailFile", "Thumbnail" ),
new FileIFrameField( "DownloadFile", "File for Download" )
);
}

public function onBeforeWrite()
{

$file = $this->ImageThumbnailFile;
$folder = Folder::findOrMake( "Uploads/articles/images" );
if($file && $folder){
if($folder->ID != $file->ParentID){
$file->setParentID($folder->ID);
$file->write();
}
}
parent::onBeforeWrite();
}

}

If I uplaod the file, it always stores it in the "Uploads/" Directory. My goal is to resize the image and save the thumbnail in "Uploads/articles/images/thumbnails/". The full sized image should be stored in "Uploads/articles/images" and linked to the Item (not set yet). Has anyone an idea of how to do this? Any idea my help...

Avatar
UncleCheese

Forum Moderator, 4102 Posts

16 December 2009 at 4:08am

I don't see any reason why you couldn't just use setUploadFolder("Uploads/articles/images") on your DOM.

Avatar
eddieconnecti

Community Member, 26 Posts

22 December 2009 at 9:39pm

I would like to create three images from the one i upload. This is the reason why i want to set the upload folder for each image. I need a colored thumbnail, a greyscakled thumbnail and an fullsized colored image by maxwidth of 600px. I think it should work with the gd lib. But maybe its better to create an extra class extending the image class with a bunch of methods.

Do you know any examples on writing files, copying files within silverstripe?

And, coming back to your question, where do i set the setUploadFolder?

Thanks!