forked from danhixon/s3-swf-upload-plugin
-
Notifications
You must be signed in to change notification settings - Fork 5
/
README
106 lines (70 loc) · 3.01 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
S3SwfUpload
===========
S3SwfUpload allow user uploading a file to S3 directly, so you can save the cost of uploading process in your app server.
Install
=======
./script/plugin install git://github.com/GreenAsJade/s3-swf-upload-plugin.git
Example
=======
There is an example app showing how to use this at
http://github.com/GreenAsJade/demo-s3-swf-upload/tree/master
It's live at
http://demo-s3-swf-upload.heroku.com/
Usage
=======
1. $ script/generate s3_swf_upload
2. Edit app/controller/s3_uploads_controller.rb
You need to skip any authentication for this controller, the flash
needs to be able to access it. There's a big comment showing you
where to do this :)
3. Configure your amazon parameters. Either set these through the
following environment variables:
AMAZON_S3_SWF_UPLOAD_BUCKET => my_public_bucket
AMAZON_ACCESS_KEY_ID => secret
AMAZON_SECRET_ACCESS_KEY => very secret
AMAZON_S3_SWF_UPLOAD_ACL => public-read
AMAZON_S3_SWF_MAX_FILE_SIZE => 209715200
or hardcode them in config/amazon_s3.yml
(The corresponding yml vars are:
bucket_name, access_key_id, secret_access_key, acl, max_file_size)
The acl will default to private.
Your rails app can also change bucket, acl and max file size like
this:
S3SwfUpload::S3Config.bucket = 'different_one'
S3SwfUpload::S3Config.acl = 'private'
S3SwfUpload::S3Config.max_file_size = 1024
4. Upload a crossdomain.xml in your bucket and make it public-read.
You can find what you need in generators/s3-swf-upload/templates in
the plugin!
5. init s3_swf object:
<%= s3_swf_upload_tag %>
6. When you click upload, your file will be upload to http://bucket.s3.amazonasw.com/ by default.
IE the default prefix is '' (no prefix)
7. If you want to customise its behavior, here's a more complex example:
<%= s3_swf_upload_tag(:width => 310,
:height => 40,
:success => 'alert("success");',
:failed => 'alert("failed");',
:selected => 'alert("selected");',
:prefix => 'prefix_in_bucket',
:initialMessage => 'Press this button to find the file to upload"
:upload => 'Press Here To Activate Upload',
:do_checks => '0')
%>
In this case, files will be uploaded to http://bucket.s3.amazonasw.com/prefix_in_bucket/filename
8. If you need to check that the file they have selected is
legitimate, before it gets uploaded, (for example, to make sure
they aren't overwriting a file of the same name your database
knows is already uploaded):
i) Supply a method s3_swf_upload_error? in your application.rb to
check, like this:
def s3_swf_upload_file_error?(filename)
Mod.find_by_zip_name(File::basename(filename)) ?
"Sorry, there is already a mod with that zip file name!" :
nil
end
Note that this method must return nil if there no error.
ii) Set the option
:do_checks => '1'
in the s3_swf_upload_tag
Copyright (c) 2008 elctech, released under the MIT license