PDA

Bekijk Volledige Versie : Ruby: aanpassing script Dropzone



Anoniem
16/08/09, 18:03
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.

Daan__
17/08/09, 09:04
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

Anoniem
17/08/09, 17:48
Ik krijg de foutmelding: private method `rand' called for Math:Module. Maar ik heb geen idee hoe dit te verhelpen valt in Ruby.

MMaI
17/08/09, 18:14
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 ::

Daan__
17/08/09, 20:47
Foutje!

Haal Math. maar helemaal weg, alleen rand is voldoende!

Anoniem
17/08/09, 22:24
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.