我正在开发一个Django Web应用程序,该应用程序接收PDF文件并对PDF的每一页进行一些图像处理。我得到了PDF,并且需要将每个页面保存到我的Google Cloud Storage中。我正在使用pdf2image
的{{1}}为PDF中的每一页生成枕头图像列表。现在,我想将这些图像保存到Google Cloud Storages中,但是我无法弄清楚。
我已经在本地成功保存了这些Pillow图像,但是我不知道如何在云中执行此操作。
convert_from_path()
答案 0 :(得分:0)
由于您已将文件保存在本地,所以它们在运行Web应用程序的本地目录中可用。
您可以做的只是简单地遍历该目录中的文件,并将它们一个接一个地上传到Google Cloud Storage。
以下是示例代码:
您将需要此库:
google-cloud-storage
Python代码:
#Libraries
import os
from google.cloud import storage
#Public variable declarations:
bucket_name = "[BUCKET_NAME]"
local_directory = "local/directory/of/the/files/for/uploading/"
bucket_directory = "uploaded/files/" #Where the files will be uploaded in the bucket
#Upload file from source to destination
def upload_blob(source_file_name, destination_blob_name):
storage_client = storage.Client()
bucket = storage_client.get_bucket(bucket_name)
blob = bucket.blob(destination_blob_name)
blob.upload_from_filename(source_file_name)
#Iterate through all files in that directory and upload one by one using the same filename
def upload_files():
for filename in os.listdir(local_directory):
upload_blob(local_directory + filename, bucket_directory + filename)
return "File uploaded!"
#Call this function in your code:
upload_files()
注意:我已经在Google App Engine网络应用程序中测试了代码,并且对我有用。考虑一下它是如何工作的,并根据需要进行修改。我希望这会有所帮助。
答案 1 :(得分:0)
因此,首先不要使用blobstore。他们正在努力获得 摆脱它,让人们使用云存储。首先设置云存储
我使用的是webapp2而不是Django,但我敢肯定您可以弄清楚。另外,我不使用枕头图片,因此您必须打开要上传的图片。然后执行以下操作(假设您正在尝试发布数据):
import cloudstorage as gcs
import io
import StringIO
from google.appengine.api import app_identity
def create_file(self, filename, Dacontents):
write_retry_params = gcs.RetryParams(backoff_factor=1.1)
gcs_file = gcs.open(filename,
'w',
content_type='image/jpeg',
options={'x-goog-meta-foo': 'foo',
'x-goog-meta-bar': 'bar'},
retry_params=write_retry_params)
gcs_file.write(Dacontents)
gcs_file.close()
进入您的HTML
<form action="/(whatever yoururl is)" method="post"enctype="multipart/form-data">
<input type="file" name="orders"/>
<input type="submit"/>
</form>
orders=self.request.POST.get(‘orders)#this is for webapp2
bucket_name = os.environ.get('BUCKET_NAME',app_identity.get_default_gcs_bucket_name())
bucket = '/' + bucket_name
OpenOrders=orders.file.read()
if OpenOrders:
filename = bucket + '/whateverYouWantToCallIt'
self.create_file(filename,OpenOrders)