2013-10-19 132 views

回答

3

由于附件和wiki API都比较新,这有点棘手,但我在过去做过类似的事情。下面是使用rest-client最小工作示例:

require 'rest_client' 
require 'json' 

key = '5daf2e447336bad7ed3993a6ebde8310ffa263bf' 
upload_url = "http://localhost:3000/uploads.json?key=#{key}" 
wiki_url = "http://localhost:3000/projects/some_project/wiki/some_wiki.json?key=#{key}" 
img = File.new('/some/image.png') 

# First we upload the image to get attachment token 
response = RestClient.post(upload_url, img, { 
    :multipart => true, 
    :content_type => 'application/octet-stream' 
}) 
token = JSON.parse(response)['upload']['token'] 

# Redmine will throw validation errors if you do not 
# send a wiki content when attaching the image. So 
# we just get the current content and send that 
wiki_text = JSON.parse(RestClient.get(wiki_url))['wiki_page']['text'] 

response = RestClient.put(wiki_url, { 
    :attachments => { 
    :attachment1 => { # the hash key gets thrown away - name doesn't matter 
     :token => token, 
     :filename => 'image.png', 
     :description => 'Awesome!' # optional 
    } 
    }, 
    :wiki_page => { 
    :text => wiki_text # original wiki text 
    } 
}) 
+0

基于这样的理念:https://github.com/GSI/mrmt/blob/master/lib/upload_files.rb – user569825