views.py 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. #coding:utf-8
  2. from django.http import HttpResponse
  3. import settings as USettings
  4. import os
  5. from utils import GenerateRndFilename
  6. #保存上传的图片到
  7. def SaveUploadFile(PostFile,FilePath):
  8. try:
  9. f = open(FilePath, 'wb')
  10. for chunk in PostFile.chunks():
  11. f.write(chunk)
  12. except Exception,E:
  13. f.close()
  14. return u"写入文件错误:"+ E.message
  15. f.close()
  16. return u"SUCCESS"
  17. #上传附件
  18. def UploadFile(request,uploadtype,uploadpath):
  19. if not request.method=="POST": return HttpResponse(u"{'state:'ERROR'}",mimetype="Application/javascript")
  20. state="SUCCESS"
  21. file=request.FILES.get("upfile",None)
  22. #如果没有提交upfile则返回错误
  23. if file is None:return HttpResponse(u"{'state:'ERROR'}",mimetype="Application/javascript")
  24. #取得上传的文件的原始名称
  25. original_name,original_ext=file.name.split('.')
  26. #类型检验
  27. if uploadtype=="image":
  28. allow_type= USettings.UEditorSettings["images_upload"]['allow_type']
  29. else:
  30. allow_type= USettings.UEditorSettings["files_upload"]['allow_type']
  31. if not original_ext in allow_type:
  32. state=u"服务器不允许上传%s类型的文件。" % original_ext
  33. #所有检测完成后写入文件
  34. if state=="SUCCESS":
  35. #检测保存路径是否存在,如果不存在则需要创建
  36. OutputPath=os.path.join(USettings.gSettings.MEDIA_ROOT,os.path.dirname(uploadpath)).replace("//","/")
  37. if not os.path.exists(OutputPath):
  38. os.makedirs(OutputPath)
  39. #要保存的文件名格式使用"原文件名_当前时间.扩展名"
  40. OutputFile=GenerateRndFilename(file.name)
  41. #保存到文件中
  42. state=SaveUploadFile(file,os.path.join(OutputPath,OutputFile))
  43. #返回数据
  44. if uploadtype=="image":
  45. rInfo={
  46. 'url' :OutputFile, #保存后的文件名称
  47. 'title' :request.POST.get("pictitle",file.name), #文件描述,对图片来说在前端会添加到title属性上
  48. 'original' :file.name, #原始文件名
  49. 'state' :state #上传状态,成功时返回SUCCESS,其他任何值将原样返回至图片上传框中
  50. }
  51. else:
  52. rInfo={
  53. 'url' :OutputFile, #保存后的文件名称
  54. 'original' :file.name, #原始文件名
  55. 'filetype' :original_ext,
  56. 'state' :state #上传状态,成功时返回SUCCESS,其他任何值将原样返回至图片上传框中
  57. }
  58. import json
  59. return HttpResponse(json.dumps(rInfo),mimetype="application/javascript")
  60. #图片文件管理器
  61. def ImageManager(request,imagepath):
  62. if not request.method!="GET": return HttpResponse(u"{'state:'ERROR'}",mimetype="Application/javascript")
  63. #取得动作
  64. action=request.GET.get("action","get")
  65. if action=="get":
  66. TargetPath=os.path.join(USettings.gSettings.MEDIA_ROOT,os.path.dirname(imagepath)).replace("//","/")
  67. if not os.path.exists(TargetPath):
  68. os.makedirs(TargetPath)
  69. return HttpResponse(ReadDirImageFiles(TargetPath),mimetype="Application/javascript")
  70. #遍历所有文件清单
  71. def ReadDirImageFiles(path):
  72. files=""
  73. dirs=os.listdir(path)
  74. for f in dirs:
  75. ext=os.path.splitext(f)[1][1:]
  76. if ext!="":
  77. if ext in USettings.UEditorSettings["images_upload"]["allow_type"]:
  78. if files!="": files+="ue_separate_ue"
  79. files+=f
  80. return files
  81. #抓取远程图片
  82. def RemoteCatchImage(request,imagepath):
  83. import json
  84. upfile_url=request.POST.get("upfile",None)
  85. if upfile_url is None:
  86. return HttpResponse(json.dumps("{'state:'ERROR'}"),mimetype="Application/javascript")
  87. import urllib
  88. from urlparse import urlparse
  89. #读取远程图片文件
  90. try:
  91. CatchFile=urllib.urlopen(upfile_url)
  92. except Exception,E:
  93. tip=u"抓取图片错误:%s" % E.message
  94. return HttpResponse(json.dumps("{'tip:'%s'}" % tip),mimetype="Application/javascript")
  95. #取得目标抓取的文件名称
  96. OutFile=os.path.basename(urlparse(CatchFile.geturl()).path)
  97. #检查文件类型
  98. OutFileExt=os.path.splitext(OutFile)[1][1:]
  99. if not (OutFileExt!="" and OutFileExt in USettings.UEditorSettings['images_upload']['allow_type']):
  100. tip=u"不允许抓取%s类型的图片错误" % OutFileExt
  101. return HttpResponse(json.dumps("{'tip:'%s'}" % tip),mimetype="Application/javascript")
  102. #将抓取到的文件写入文件
  103. try:
  104. f = open(os.path.join(USettings.settings.MEDIA_ROOT,imagepath,OutFile).replace("\\","/"), 'wb')
  105. f.write(CatchFile.read())
  106. f.close()
  107. rInfo={
  108. 'url' : OutFile, # 新地址一ue_separate_ue新地址二ue_separate_ue新地址三',
  109. 'srcUrl':upfile_url, #原始地址一ue_separate_ue原始地址二ue_separate_ue原始地址三',
  110. 'tip' :u'远程图片抓取成功!' #'状态提示'
  111. }
  112. return HttpResponse(json.dumps(rInfo),mimetype="Application/javascript")
  113. except Exception,E:
  114. tip=u"写入图片文件错误:" % E.message
  115. return HttpResponse(json.dumps("{'tip:'%s'}" % tip),mimetype="Application/javascript")
  116. #搜索视频
  117. def SearchMovie(request):
  118. Searchkey =request.POST.get("searchKey",None)
  119. if Searchkey is None:
  120. return HttpResponse(u"错误!")
  121. Searchtype=request.POST.get("videoType","")
  122. import urllib
  123. Searchkey=urllib.quote(Searchkey.encode("utf8"))
  124. Searchtype=urllib.quote(Searchtype.encode("utf8"))
  125. import urllib
  126. try:
  127. htmlcontent=urllib.urlopen(u'http://api.tudou.com/v3/gw?method=item.search&appKey=myKey&format=json&kw=%s&pageNo=1&pageSize=20&channelId=%s&inDays=7&media=v&sort=s' % (Searchkey,Searchtype))
  128. return HttpResponse(htmlcontent)
  129. except Exception as E:
  130. return HttpResponse(E.message)