我原先是通过fdfs的upload_by_filename 方法上传,总是出错,耽误了两天时间去排错,网上各种搜也没有答案,后来索性更换方式,就修改了两行代码,竟然ok.记下来,能帮一个是一个。
原来的报错内容可去这里看图 :https://ask.csdn.net/questions/767762
下面视图函数内容 用于接收上传内容
class JhQcodeUpload(LoginRequiredMixin,View):
def post(self,request):
user_id = request.user.id # 获取上传用户的id 没必要的可以不写
content = request.FILES['pic1'] # 这个有回传 值为图片文件的名字
client = Fdfs_client('/etc/fdfs/client.conf') # 连接fdfs客户端 就像连接redis一样
res = client.upload_by_buffer(content.read()) #按上传文件内容保存 所以content.read()
pic=res.get('Remote file_id') #获取上传后返回的文件路径或者说为文件名字
User.objects.filter(id=user_id).update(qcode=pic) # 存入相对应用户的数据库
return JsonResponse({'res': 1, 'message': 'ok'})
上面这是后端接收时用的代码,至于request.FILES是什么 看下面图
附前端html代码: 注意 当使用post方法上传时 enctype="multipart/form-data" 这串代码要带上 这样上传的数据里才有各种参数
<span>
<form method="post" action="/juhe/setqcode" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" name="pic1"/>
<input type="submit" name="wxpay" value="上传">
</form>
</span>
如果需要fdfs配置里的内容,网上倒是一艘一堆,需要的话也可以再联系我。