Ich habe ein Problem, bei dem Bilder, die über Django (mit Boto3) auf die S3 -API von Seaughfs hochgeladen wurden, beschädigt sind, während Uploads über die S3 -Browser -Desktop -App korrekt funktioniert. Die hochgeladenen Dateien sind 55 Bytes größer als das Original und enthalten eine Inhaltskodierung: AWS-Chunked Header, wodurch die Bilder unauffällig werden. />[*]Proxy: nginx (handling SSL)
[*]Framework: Django
[*]Storage Client: boto3
[*]Upload Method: Using Django's storage backend with PrivateStorage
< /ul>
Ausgabedetails < /h2>
- Beim Hochladen durch S3 -Browser -Desktop -App: < /p>
- Dateigröße entspricht Original < /li>
Images öffnet sich korrekt. /> < /ul>
< /li>
Beim Hochladen durch Django /boto3: < /p>
Die Dateigröße erhöht sich um 55 Byte < /li>
Die Reaktion inhaltlich und kodiert. Unauftroffen < /li>
Erste Bytes enthalten unerwartete Daten ()Code: Select all
100000
- Letzte Bytes enden mit .x-amz-tecksum-
- Dateigröße entspricht Original < /li>
Code: Select all
Original file size: 12345 bytes
Uploaded file size: 12400 bytes (+55 bytes)
First bytes: 100000...
Last bytes: ...x-amz-checksum-crc32:SJJ2UA==
< /code>
Versuchte Lösungen < /h2>
Versuchte verschiedene Upload-Methoden ausprobiert:
# Method 1: Using ContentFile
storage.save(path, ContentFile(file_content))
# Method 2: Using Django File object
storage.save(path, File(file))
# Method 3: Direct boto3 upload
client.upload_fileobj(f, bucket_name, path)
< /code>
< /li>
< /ol>
Fragen < /h2>
Ist dies ein bekanntes [url=viewtopic.php?t=19220]Problem[/url] mit S3 API-Implementierung von SeaWeedfs? Header oder Konfigurationen, die im Nginx -Proxy benötigt werden, um binäre Uploads korrekt zu verarbeiten? Hilfe oder Einblicke wären sehr geschätzt.import boto3
AWS_ACCESS_KEY_ID=''
AWS_SECRET_ACCESS_KEY=''
API_URL=''
bucket_name = 'sample-bucket'
s3 = boto3.client('s3',
aws_access_key_id=AWS_ACCESS_KEY_ID,
aws_secret_access_key=AWS_SECRET_ACCESS_KEY,
endpoint_url=API_URL)
testfile = r"image.png"
s3.upload_file(testfile, bucket_name, 'sample.png', ExtraArgs={'ContentType': 'image/png'})