问题
I'm using Python 2.7.9 on Linux and I am following Google's example on Google-Cloud Server SDK. My goal is to upload an image to Google Cloud Platform, but I'm getting the error below.
File "/home/pi/test.py", line 15, in <module>
zebraBlob.upload_from_filename(filename='/home/pi/Pictures/testimg.jpg')
AttributeError: 'NoneType' object has no attribute
'upload_from_filename'
Code:
from firebase import firebase
from google.cloud import storage
import os
firebase = firebase.FirebaseApplication('https://motion-detector-234.firebaseio.com', None)
storage_client = storage.Client.from_service_account_json('Motion Detector-8gf5445fgeeea.json')
bucket = storage_client.get_bucket('motion-detector-210fds717.appspot.com')
print ('bucket', bucket) // output: bucket, motion-detector-210717.appspot.com
zebraBlob = bucket.get_blob('testimg.jpg')
print(zebraBlob) // output: None
zebraBlob.upload_from_filename(filename='/home/pi/Pictures/testimg.jpg')
How can it be resolved?
回答1:
To make it work you should simply write zebraBlob = bucket.blob('testimg.jpg')
instead of zebraBlob = bucket.get_blob('testimg.jpg')
回答2:
Came across the same issue and only solved it by creating another image from the Google Cloud Console first (navigate to your bucket and click "Upload file").
Once it has been made it seems to work fine and uploads the new image, replacing the other one.
ps you can rename the image on console like this
If I figure out how to just create a new file without doing this first I will update this post, if anyone else knows already please feel free to inbox me to update it :)
来源:https://stackoverflow.com/questions/51439904/attributeerror-nonetype-object-has-no-attribute-upload-from-filename