2010-05-21 10 views
0

J'ai créé une forme de test qui demandera aux utilisateurs d'entrer un nom et télécharger le fichier d'image:Nécessité d'obtenir le fichier téléchargé sur mon PC local

<html lang="en"> 
<head> 
    <title>Testing image upload</title> 
</head> 
<body> 
    <form action="/services/upload" method="POST" enctype="multipart/form-data"> 
    File Description: <input name='fdesc' type='text'><br> 
    File name: <input type="file" name="fname"><br> 
    <div><input type="submit"></div> 
    </form> 
</body> 
</html> 

j'ai besoin pour obtenir le fichier téléchargé par l'utilisateur et stockez-le sur mon PC local. cela peut-il être fait en python? s'il vous plaît, faites-moi savoir.

+0

Désolé pour une erreur, mon PC local signifie notre serveur de développement lui-même sur lequel le fichier html mentionné ci-dessus est chargé. est-il possible d'obtenir le fichier et de le stocker dans/tmp ou dans un autre emplacement. – Suhail

+0

Comment utilisez-vous Python? mod_python, mod_wsgi, un script CGI, ou autre chose? –

+0

son serveur apache et j'utilise mod_python – Suhail

Répondre

1

mod_python comprend le FieldStorage class qui vous permet d'accéder aux données de formulaire téléchargées. Pour l'utiliser, vous mettiez quelque chose comme ce qui suit dans votre script Python:

req.form = FieldStorage(req) 
description = req.form['fdesc'] 

Depuis fdesc est une entrée de texte, description sera une chaîne (plus précisément, un StringField, que vous pouvez traiter comme un string).

file_field = req.form['fname'] 

Depuis fname est une entrée de fichier, file_field ne sera pas être une chaîne (ou StringField), mais plutôt un objet Field qui vous permet d'accéder aux données de fichiers. L'attribut file_field.file est un objet de type fichier que vous pouvez utiliser pour lire le contenu du fichier, par exemple comme ceci:

for line in file_field.file: 
    # process the line 

Vous pouvez l'utiliser pour copier quelque part de votre choix les données du fichier, par exemple.

file_field.filename est le nom du fichier fourni par le client. D'autres attributs utiles sont listés dans la documentation à laquelle je suis lié.

+0

David, je ne suis pas capable de le faire fonctionner, je pense que je le fais mal, pouvez-vous me donner un exemple. – Suhail

+0

Je l'ai fait. Il y a quelques lignes de code d'exemple dans ma réponse et il y a des exemples plus complets aux liens que je vous ai donnés. Si vous les avez passés en revue et que vous n'avez pas réussi à comprendre pourquoi votre code ne fonctionne pas, postez une nouvelle question (puisque "pourquoi ce travail ne fonctionne-t-il pas" est une question distincte de "comment le faire?"), et assurez-vous d'inclure votre code et les détails de votre message d'erreur. –

+0

Hey David, je l'ai eu le travail, merci pour l'aide. – Suhail

0

Hey David je l'ai eu de travail, je l'ai fait de cette façon:

filename = request.FILES['fname'] 
destination = open('%s/%s'%(/tmp/,fileName), 'wb+') 
for chunk in filename.chunks(): 
      destination.write(chunk) 
destination.close() 

file = open('%s/%s'%(/tmp/,fileName),"rb").read() 

Merci pour l'aide les gars.

+0

Il est bon de poster votre code comme une réponse si la réponse de personne ne suffit pas, mais vous ne devriez probablement pas l'écrire comme si vous répondez à quelqu'un d'autre. –

Questions connexes