Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require 'drb'
- require 'digest/md5'
- OUTPUT_PATH = "/home/zero/z.orez.us/public/ooo/"
- class OooController < ApplicationController
- layout 'service'
- def index
- end
- def upload
- newfn = Digest::MD5.hexdigest(params[:ooo].original_filename + Time.now.to_s)
- fin = OUTPUT_PATH + newfn + File.extname(params[:ooo].original_filename)
- File.open(fin, 'w') do |f| f.write params[:ooo].read end
- fout = OUTPUT_PATH + newfn + ".pdf"
- DRb.start_service
- pdfserver = DRbObject.new(nil, 'druby://:10500')
- logger.info("Going to convert from #{fin} to #{fout}")
- pdfserver.convert(fin, fout)
- DRb.stop_service
- session[:chk] = 0
- render :text => "$('upload_status').innerHTML = '轉換中,請稍後...<img src=\"/images/wait.gif\"/>';new PeriodicalExecuter(function(){new Ajax.Request('/ooo/check/#{newfn}', {method: 'get'});}, 5);"
- end
- def check
- session[:chk] += 1
- fn = OUTPUT_PATH + params[:id] + '.pdf'
- logger.info "check file #{fn}"
- headers["Content-Type"] = "text/javascript; charset=utf-8"
- if File.exist? fn
- logger.info "file is there."
- # Conversion complete
- session[:chk] = 0
- render :text => "location.href='/ooo/download/#{params[:id]}';"
- else
- # Still converting...
- if session[:chk] < 12
- logger.info "wait..."
- render :text => "$('upload_status').innerHTML = '轉換中,請稍後...<img src=\"/images/wait.gif\"/>';"
- else
- logger.info "failed"
- session[:chk] = 0
- render :text => "location.href='/ooo/failed';"
- end
- end
- end
- def download
- end
- def failed
- end
- end
Add Comment
Please, Sign In to add comment