Adding attachments through the REST API
|Assignee:||Jean-Philippe Lang||% Done:|
This seems to be requested often:
Currently people are working around this limitation in various ways (adding attachments by mail, constructing multipart form requests, ...).
I just started learning rails and the redmine internals, but wouldn't it be possible to just pass the attachment as base64 encoded string inside the issue, -json / xml?
On the issue controller side, something like this might work (it did work for me while testing things out with curl):
diff --git a/app/models/attachment.rb b/app/models/attachment.rb index 99e461d..e358785 100644 --- a/app/models/attachment.rb +++ b/app/models/attachment.rb @@ -144,6 +144,18 @@ class Attachment < ActiveRecord::Base if attachments && attachments.is_a?(Hash) attachments.each_value do |attachment| file = attachment['file'] + if file.is_a?(Hash) + #Looks like we got a base64 encoded file from the api + require "base64" + require "tempfile" + base64encodedData = file["data"] + tempfile = Tempfile.new("redmine_rest_api_attachment") + tempfile.content_type = file["content_type"] + tempfile.original_filename = file["original_filename"] + tempfile.write(Base64.decode64(file["data"])) + tempfile.rewind + file = tempfile + end next unless file && file.size > 0 a = Attachment.create(:container => obj, :file => file,
diff --git a/config/initializers/tempfile_for_attachments.rb b/config/initializers/tempfile_for_attachments.rb new file mode 100644 index 0000000..779140e --- /dev/null +++ b/config/initializers/tempfile_for_attachments.rb @@ -0,0 +1,4 @@ +require 'tempfile' +class Tempfile + attr_accessor :content_type, :original_filename +end
Not pretty but kind of works. If someone could help me out a bit, I guess we could implement something much cleaner pretty quickly.
Bonus points if the thing works out of the box with active resource ;)
#4 Updated by Bruno Medeiros over 9 years ago
Part of this seems to be already done, as we have this page: http://www.redmine.org/projects/redmine/wiki/Rest_Attachments
Could someone update the summary/%done to match the current state?
#7 Updated by Hannes Meier over 9 years ago
I am new to redmine and programming but just tested the rest api by using redminews to generate ticktes. It worked pretty easy but i wanted to go a step ahead now and attach files to the tickets. Then i found this open ticket here.
In my case a kind of "softimport" would be enough, just to give the creator a path information (data in same network like redmine installation) and redmine would connect (link to) this picture to a ticket/issue.
That would be so awesome.
But even without this feature redmine is a fantastic project! thank you for this great piece of software!
#9 Updated by Hannes Meier over 9 years ago
Well it works with real urls like http://www.arealwebpage.com/image.jpg but not with local files. This seems to be a security issue, or?
So a possibility to attach files to an issue would still be great.
Or is there a way around and a possibilty to include local files in the issue description?