diff --git a/examples/README.md b/examples/README.md new file mode 100644 index 00000000..3d49e892 --- /dev/null +++ b/examples/README.md @@ -0,0 +1 @@ +- `presigned_url_upload.py` — Generate a signed URL to upload a file to OSS securely diff --git a/examples/presigned_url_upload.py b/examples/presigned_url_upload.py new file mode 100644 index 00000000..cf1f4891 --- /dev/null +++ b/examples/presigned_url_upload.py @@ -0,0 +1,30 @@ +# examples/presigned_url_upload.py + +import oss2 + +# Replace with your actual credentials and bucket info +ACCESS_KEY_ID = '' +ACCESS_KEY_SECRET = '' +ENDPOINT = 'https://oss-cn-hangzhou.aliyuncs.com' # Change if needed +BUCKET_NAME = '' +OBJECT_NAME = 'demo_upload_via_presigned.txt' +EXPIRATION_SECONDS = 300 # 5 minutes + +# Initialize auth and bucket +auth = oss2.Auth(ACCESS_KEY_ID, ACCESS_KEY_SECRET) +bucket = oss2.Bucket(auth, ENDPOINT, BUCKET_NAME) + +# Generate presigned URL for PUT upload +signed_url = bucket.sign_url('PUT', OBJECT_NAME, EXPIRATION_SECONDS) + +print("✅ Presigned URL (valid for 5 minutes):") +print(signed_url) + +# Optional upload using requests +try: + import requests + with open('example.txt', 'rb') as f: + response = requests.put(signed_url, data=f) + print("Upload status code:", response.status_code) +except Exception as e: + print("Install `requests` to auto-upload, or use the URL manually.")