forked from lavishsheth/code
-
Notifications
You must be signed in to change notification settings - Fork 0
/
App Dev: Storing Image and Video Files in Cloud Storage - Python
110 lines (90 loc) · 2.74 KB
/
App Dev: Storing Image and Video Files in Cloud Storage - Python
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
107
108
109
110
gcloud config set project $DEVSHELL_PROJECT_ID
git clone https://github.com/GoogleCloudPlatform/training-data-analyst
cd ~/training-data-analyst/courses/developingapps/python/cloudstorage/start
. prepare_environment.sh
gsutil mb gs://$DEVSHELL_PROJECT_ID-media
wget https://storage.googleapis.com/cloud-training/quests/Google_Cloud_Storage_logo.png
gsutil cp Google_Cloud_Storage_logo.png gs://$DEVSHELL_PROJECT_ID-media
export GCLOUD_BUCKET=$DEVSHELL_PROJECT_ID-media
cd quiz/gcp
cat > storage.py <<EOF_END
# TODO: Get the Bucket name from the
# GCLOUD_BUCKET environment variable
bucket_name = os.getenv('GCLOUD_BUCKET')
# END TODO
# TODO: Import the storage module
from google.cloud import storage
# END TODO
# TODO: Create a client for Cloud Storage
storage_client = storage.Client()
# END TODO
# TODO: Use the client to get the Cloud Storage bucket
bucket = storage_client.get_bucket(bucket_name)
# END TODO
"""
Uploads a file to a given Cloud Storage bucket and returns the public url
to the new object.
"""
def upload_file(image_file, public):
# TODO: Use the bucket to get a blob object
blob = bucket.blob(image_file.filename)
# END TODO
# TODO: Use the blob to upload the file
blob.upload_from_string(
image_file.read(),
content_type=image_file.content_type)
# END TODO
# TODO: Make the object public
if public:
blob.make_public()
# END TODO
# TODO: Modify to return the blob's Public URL
return blob.public_url
# END TODO
EOF_END
cd quiz/webapp/
cat > questions.py <<EOF_END
# TODO: Import the storage module
from quiz.gcp import storage, datastore
# END TODO
"""
uploads file into google cloud storage
- upload file
- return public_url
"""
def upload_file(image_file, public):
if not image_file:
return None
# TODO: Use the storage client to Upload the file
# The second argument is a boolean
public_url = storage.upload_file(
image_file,
public
)
# END TODO
# TODO: Return the public URL
# for the object
return public_url
# END TODO
"""
uploads file into google cloud storage
- call method to upload file (public=true)
- call datastore helper method to save question
"""
def save_question(data, image_file):
# TODO: If there is an image file, then upload it
# And assign the result to a new Datastore
# property imageUrl
# If there isn't, assign an empty string
if image_file:
data['imageUrl'] = str(
upload_file(image_file, True))
else:
data['imageUrl'] = u''
# END TODO
data['correctAnswer'] = int(data['correctAnswer'])
datastore.save_question(data)
return
EOF_END
cd ~/training-data-analyst/courses/developingapps/python/cloudstorage/start
python run_server.py