Bekijk Volledige Versie : Ruby: aanpassing script Dropzone
In de bijlage zit een script welke is geschreven voor Dropzone (http://aptonic.com/). Dit script upload files naar een vooraf gedefineerde server.
De aanpassing die ik graag zou willen is dat deze de file renamed naar een random string van maximaal 5 karakters met behoud van de originele file extensie.
Wie heeft hier zin in en laat me even weten wat dit gaat kosten.
Dat is niet zo heel spannend :)
Bijgaand heb ik ff snel gemaakt voor je.
Heb je het niet getest, dus dat moet je zelf even doen..
completed = false
while completed == false
new_file_name = "#{Math.rand('99999')}.#{File.extname(file_name)}"
begin
ftp.rename(remote, new_file_name)
completed = true
rescue
## Filename bestaat al
end
end
Dit moet je onder
ftp.putbinaryfile(local, remote) do |data|
transferred += data.length
percent = (transferred * 100 / size)
yield percent, remote
end
regel 87
Ik krijg de foutmelding: private method `rand' called for Math:Module. Maar ik heb geen idee hoe dit te verhelpen valt in Ruby.
volgens mij moet de regel
new_file_name = "#{Math.rand('99999')}.#{File.extname(file_name)}"
dit zijn:
new_file_name = "#{Math::rand('99999')}.#{File.extname(file_name)}"
niet getest maar normaal zijn ruby math dingen met ::
Foutje!
Haal Math. maar helemaal weg, alleen rand is voldoende!
Goed, na wat gepuzzel gaat het renamen nu in ieder geval goed:
file_array = local.to_s
file_array = file_array.split(/\//)
file_name = file_array[-1]
new_file = "#{rand('9999999')}#{File.extname(file_name)}"
remote_new = remote.gsub("#{file_name}", "#{new_file}")
ftp.rename("#{remote}", "#{remote_new}")
Het probleem is alleen dat niet de juiste URL wordt terug gegeven door Dropzone, maar daar kan ik misschien beter voor contact met hen opnemen.