-
Notifications
You must be signed in to change notification settings - Fork 0
Lesson: adding content datastreams
This lesson is known to work with hydra-head version 6.0.0.
Please update this wiki to reflect any other versions that have been tested.
- Add "file-bearing" Datastreams to models and objects
- See where files are stored in Fedora objects and how to retrieve them
So far, we've only added datastreams that bear metadata. Let's add a datastream that has some content to it. For example, this could be a content datastream in our book model that is an image of the book's cover, or a datastream added to the page model that is an image or pdf of that actual page.
In this case, we'll add a file datastream where we can store a pdf of a page.
In our Page model app/models/page.rb
, we'll add the following line underneath our descMetadata datastream:
has_file_datastream "pageContent"
Now we have a datastream called "pageContent" that can hold any kind of file we wish to add to it.
To add the file to one of our page objects, open up the console again:
> p = Page.find("changeme:2")
=> #<Page pid:"changeme:2", number:[1], text:["Happy families are all alike; every unhappy family is unhappy in its own way."]>
> p.datastreams.keys
=> ["DC", "RELS-EXT", "descMetadata", "pageContent"]
Now you're ready to add the file. Choose a file on your computer that you want to add as the "pageContent". In the lines below we're pretending that the path to the file is "/Users/adamw/Desktop/page1.pdf". Replace that with the correct local path for the file you want to use.
> p.pageContent.content = File.open("/Users/adamw/Desktop/page1.pdf")
=> #<File:/Users/adamw/Desktop/page1.pdf>
> p.save
=> true
Now if you go to http://localhost:8983/fedora/objects/changeme:2/datastreams, you'll see the pageContent datastream in Fedora. Following the links to it will allow us to view or download the file we've added.
Go on to Lesson: Generate Rails Scaffolding for Creating and Editing Books or return to the Dive into Hydra page.