Image -Upload -Korruption mit Seaughfs S3 APIPython

Python-Programme
Anonymous
 Image -Upload -Korruption mit Seaughfs S3 API

Post by Anonymous »

Problembeschreibung < /h2>
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-
Beispiel einer korrumpierten Datei

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'})

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post