django 文件上传 文件不一致

写了很简单的一个django上传的例子,可是发现上传的文件和源文件稍微不一样,打开的时候提示“文件损坏”之类的,mp3文件则表现为杂音

主要代码如下:

模版html

<html>
	<body>
		<form action="#" method="post" enctype="multipart/form-data">
			{% csrf_token %}
			title: <input name="title" /><br/>
			file:  <input name="ff" type="file" />
			<div><input type="submit" name="post"></div>
		</form>
	</body>
</html>

处理代码

def handle_upfile(files):
	# print 'file name is', files['name']

	storefile = open(files.name, 'w')
	for chunk in files.chunks():
		storefile.write(chunk)
	storefile.close()

@csrf_protect
def upload(request):
	if request.method == 'POST':
		# form = upfileform.UploadForm(request.POST, request.FILES)
		print 'check if is_valid'

		utils.handle_upfile(request.FILES['ff'])
		return HttpResponseRedirect(reverse('fage.views.detail'))
	else:
		form = upfileform.UploadForm()

	return render(request, 'fage/upload.html', {'form': form})

于是上查看django文档,发现一处细微的差别,存放上传文件的打开模式不一样

storefile = open(files.name, 'w')

将之改为

storefile = open(files.name, 'wb+')

问题解决


 
结论:文件上传是以二进制的形式传递,所以如果保存的时候不是以二进制方式保存的话就会出现损失的情况

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值