和普通上传区别不大,用flash在上传操作时。django的csrf会报错,就直接在当前的方法给关掉了csrf。
1、
2、
3、
@csrf_exempt
def do_upload(request,action):
if action =='my':
file_obj = request.FILES.get('Filedata', None)
user_id = request.POST.get('blue','')
user_info = UserBase.objects.get(id=user_id)
if file_obj:
fname = file_obj.name
this_file_name=file_obj.name
fname = user_id+str(time.strftime("%Y-%m-%d-%H-%M-%S"))+str(random.randint(0,9999)) + fname[fname.rfind('.'):]
file_types = fname[fname.rfind('.'):]
if os.path.isdir(homedir+'/pub/disk/'+user_id):
pass
else :
os.mkdir(homedir+'/pub/disk/'+user_id)
of = open(homedir+'/pub/disk/'+user_id+'/'+fname, 'wb+')
for chunk in file_obj.chunks():
of.write(chunk)
of.close()
代码和普通上传一样,这里做了一个共享功能。能够把文件的下载权限给其他的人,主要是几个页面设计和js传值的小技巧。
elif action=='go_share':
if rbac.who(request)=='x':
return system.index.login_out(request)
else:
users = rbac.who(request)
if request.POST.getlist("user_name") and request.POST.get("id",""):
names = request.POST.getlist("user_name")
try:
FileUserList.objects.filter(file_id = request.POST.get("id",""),create_user_id=users.id).delete()
except:
return HttpResponse('ok')
for bc in names:
file_user = FileUserList()
file_user.user_id = bc
file_user.file_id = request.POST.get("id","")
file_user.create_time = time.strftime("%Y-%m-%d %H:%M:%S")
try:
file_user_s = FileUserList.objects.filter(file_id = request.POST.get("id",""),user_id = bc,create_user_id=users.id)
except:
pass
#return HttpResponse('okx')
else:
if len(file_user_s)>0:
pass
else:
user_info = UserBase.objects.filter(id= bc)[0]
file_user.true_name = user_info.true_name
file_user.create_user_id = users.id
file_user.save()
return HttpResponse('ok')
elif type(request.POST.getlist("user_name")) is types.ListType and request.POST.get("id",""):
# user_name data is none, but has id ,so give me del all user info
try:
FileUserList.objects.filter(file_id = request.POST.get("id",""),create_user_id=users.id).delete()
except:
return HttpResponse('okx')
return HttpResponse('ok')
先到这,下次再把js效果弄上来。

- 大小: 49.4 KB

- 大小: 42 KB

- 大小: 20.1 KB
分享到:
相关推荐
这个例子可能展示了如何在Django应用中集成Uploadify,以实现用户友好的文件上传体验。 1. **jQuery**: jQuery是一个JavaScript库,简化了DOM操作、事件处理和Ajax交互。在这个例子中,jQuery被用来触发Uploadify的...
django上传图片的jquery实现 使用uploadify 实现 使用AjaxFileUpload实现 整个源码是一个pycharm工程 将所有的文件都包括了 如果还是报错,请安装第三方的包 比如PIL等
文件上传在现代网页应用中是不可或缺的功能,尤其在社交媒体、文档分享、个人作品展示等领域更是常见。使用jQuery作为JavaScript库可以极大地提升用户交互体验,使文件上传过程更加人性化。以下是一些优秀的jQuery...
在网页开发中,文件上传是一项常见且重要的功能。随着技术的发展,传统的文件上传方式已经不能满足用户对于用户体验和效率的需求。jQuery,一个广泛使用的JavaScript库,提供了许多优秀的插件,使得文件上传变得更加...
在Django框架中,文件上传通常涉及到视图(views)的处理。`@csrf_exempt` 和 `@require_http_methods(["POST"])` 装饰器用于禁用CSRF保护(防止跨站请求伪造)并确保只接受POST请求。`uploadFiles` 函数接收一个`...