Récupération du fichier réel à partir d'une requête http (pour os.stat)

voix
2

J'aimerais récupérer les méta-données d'un fichier téléchargé en utilisant :

st = os.stat(file_path)

Cependant, je ne sais pas comment analyser l'attribut file_path de la requête http. Par exemple, j'ai utilisé :

request.FILES

mais ensuite obtenir :

TypeError: stat: path should be string, bytes, os.PathLike or integer, not MultiValueDict

Je sérialise aussi la requête, comme ça :

serializer = FileSerializer(data=request.data)

Comment puis-je obtenir le fichier effectivement téléchargé dans la requête http ?

Créé 04/05/2020 à 11:50
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
0

On peut se demander s'il s'agit d'une bonne chose à faire en général avant que le fichier ne soit enregistré dans un emplacement permanent (cela peut ne pas être applicable au stockage dans le nuage, etc.), mais la réponse est oui :

Lorsqu'il est téléchargé, le fichier est stocké temporairement par Django soit en mémoire (s'il est petit), soit sur un disque avec des gestionnaires de téléchargement.

Tous les UploadedFiles auront des attributs comme la taille, le nom.

Si le TemporaryFileUploadHandler a été utilisé pour stocker le fichier - ce fichier request.FILESsera TemporaryUploadedFile" rel="nofollow noreferrer">TemporaryUploadedFile et aura la temporary_file_path()méthode :

Créé 06/05/2020 à 18:47
source utilisateur

voix
0

Pour récupérer le fichier réel à partir d'une requête http, vous pouvez utiliser ceci :

if request.method == 'POST':
        uploaded_file = request.FILES['XYZ']
        fs = FileSystemStorage()
        server_file_name = fs.save(uploaded_file.name, uploaded_file)

où XYZ est la valeur de l'attribut name dans la balise de saisie. Comme ceci :

<input type="file" name="XYZ" aria-label="Upload File" id="_upload_file">
Créé 13/05/2020 à 00:18
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more