-Wenn Sie mit django einen Endpunkt zum Hochladen von Dateien erstellen, müssen Sie das erfasste Dateiobjekt unverändert in MinIO (https://min.io/) einfügen --Memorandum
--Umgebung - python: v.3.7.7 - django: v.2.0.3 - minio: 5.0.13
Template
{% extends 'base.html' %} //Laden Sie gegebenenfalls die Basis
{% block content %}
//Die Enctype-Beschreibung ist für das Hochladen von Dateien erforderlich
<form method="POST" action="{% url 'upload_to_minio' %}" enctype="multipart/form-data">
{% csrf_token %}
//Eingabe für den Datei-Upload
<p>
<label for="myfile">File:</label>
<input type="file" name="myfile" required id="myfile">
</p>
//Schaltfläche Hochladen
<button type=“submit”>hochladen</button>
</form>
{% endblock %}
urs.py
urlpatterns = [
path("umc/upload_to_minio/", views.UploadToMinio.as_view(), name="upload_to_minio"
]
views.py --Schreiben Sie die Logik, um die hochgeladenen Dateiinformationen abzurufen und in MinIO zu speichern
class UploadToMinio(generic.View, LoginRequiredMixin):
def post(self, request, *args, **kwargs):
try:
#Die hochgeladene Datei ist eine Anfrage.In DATEIEN gespeichert
myfile = self.request.FILES['myfile']
#Lesen Sie die Binärdaten der Datei in den Speicher
#Seien Sie vorsichtig beim Umgang mit großen Dateien
file_obj = myfile.read()
#Dateigröße abrufen
file_size = myfile.size
#Bucket-Name des Speicherziels
bucket_name = 'hoge'
#Name des Speicherzielobjekts
object_name = 'fuga'
# minio client
minioClient = Minio(
'host:port', #MinIO-Zugriffsziel
access_key='access_key', #Zugriff für jede Umgebung_key
secret_key='secret_key', #Geheimnis jeder Umgebung_key
secure=True) #True für die https-Kommunikation
#Erstellen Sie einen Bucket, falls dieser nicht vorhanden ist
if not minioClient.bucket_exists(project_id):
minioClient.make_bucket(bucket_name=bucket_name)
#Ein Objekt erstellen
minioClient.put_object(
bucket_name=project_id,
object_name=uuid,
data=io.BytesIO(file_obj),
length=file_size
)
--data
in put_object
akzeptiert nur Objekte, die von io.RawIOBase
erben. Verwenden Sie daher "io.BytesIO ()", um einen Binärstrom für das Objekt im Speicher zu erstellen.
Das sollte funktionieren
Recommended Posts