标签:enc rand 逻辑 错误 class 模版 file name cti
近日在用Django框架开发过程中遇到上传用户头像问题,经多方搜索资料,终于解决问题!
1.首先,在html模版中添加类似下面的代码
1
2
3
4
5
|
< form enctype="multipart/form-data" method="POST" action="/view/process/upload/file"> {% csrf_token %} < input type="file" name="your_file"/> < input type="submit" value="上传文件" /> </ form > |
这里需要注意一下几点:
2.接下来,编写CGI逻辑
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
def process_upload_file(request): # 获取文件 file_obj = request.FILES.get( ‘your_file‘ , None ) if file_obj = = None : return HttpResponse( ‘file not existing in the request‘ ) # 写入文件 file_name = ‘temp_file-%d‘ % random.randint( 0 , 100000 ) # 不能使用文件名称,因为存在中文,会引起内部错误 file_full_path = os.path.join(UPLOAD_ROOT, file_name) dest = open (file_full_path, ‘wb+‘ ) dest.write(file_obj.read()) dest.close() return render_to_response( ‘upload_result.html‘ ,{}) |
取用文件的方式为:“file_obj = request.FILES.get(‘file‘, None)”。第一个参数”your_file”对应form中的第一个input标签。然后,可以通过file_obj.name获取文件名称,file_obj.read()方法获取文件内容。上传的文件放在内存中,所以此方法只适合小文件上传。
标签:enc rand 逻辑 错误 class 模版 file name cti
原文地址:http://www.cnblogs.com/leonardchen/p/7391238.html