Gogs 4 éve
szülő
commit
00914c590f

+ 25 - 0
src/common/common_control.py

@@ -85,6 +85,31 @@ def upload_file(request):
     return rst
 
 
+def upload_to_oss(request):
+    """
+    """
+    upload_file = request.FILES['file']
+    ext = os.path.splitext(upload_file.name)[-1]
+    timestamp = str(int(time.time()*1000))
+    dest = "upload/"+ timestamp + ext
+
+    from utils.upload_to_oss import TedOSS
+    tedoss = TedOSS()
+    url = tedoss.upload_from_str(upload_file.chunks(),dest)
+    return url
+
+    #url = dest.replace(settings.STATIC_ROOT,settings.HOST)
+    #rst = {"url":url,"type":request.POST.get("type"),"name":upload_file.name}
+    ##
+    #if ext == ".mp4":
+    #    imgpath = settings.STATIC_ROOT + "/upload/" + timestamp + ".png"
+    #    cmd = "ffmpeg  -i {}  -ss 1.000 -vframes 1 {}".format(dest,imgpath)
+    #    os.system(cmd)
+    #    imgurl = imgpath.replace(settings.STATIC_ROOT,settings.HOST)
+    #    rst["imgurl"] = imgurl
+    #return rst
+
+
 if __name__ == "__main__":
     #测试
     print get_pparents_info(1550,[])

+ 2 - 1
src/manage/views.py

@@ -868,7 +868,8 @@ class UploadFileView(cv.BaseView):
         @type:"",前端自定义参数
         """
         try:
-            rst = ccc.upload_file(request)
+            #rst = ccc.upload_file(request)
+            rst = ccc.upload_to_oss(request)
             return cv.to_suc(rst)
         except Exception as e:
             cv.tracefail()

+ 95 - 0
src/utils/upload_to_oss.py

@@ -0,0 +1,95 @@
+# -*- coding: utf-8 -*-
+import os
+import oss2
+import requests
+import uuid
+import time
+
+class TedOSS:
+    def __init__(self):
+        """
+        """
+        #self.AccessKeyID = 'LTAIWf1G4szSVK57'
+        #self.AccessKeySecret = 'X8cyxHuOumqw4B0MQPdlvYL2FTZh05'
+        self.AccessKeyID = 'LTAI4G9BTKP2D3zfDpQkk8S8'
+        self.AccessKeySecret = 'aTQIvkP5C16e7fUH6zIlrB7I3j4TbR'
+        self.bucket_name = 'tederenoss'
+        self.root_name = 'zky'
+        self.auth = oss2.Auth(self.AccessKeyID, self.AccessKeySecret)
+        self.endpoint = 'http://oss-cn-beijing.aliyuncs.com'
+        self.bucket = oss2.Bucket(self.auth, self.endpoint, self.bucket_name)
+        self.domain = 'http://tederenoss.oss-cn-beijing.aliyuncs.com'
+
+
+    def upload_from_str(self,content_str=None,filename=None):
+        '''
+        通过字符串上传
+        byte,unicode,str
+        '''
+        filename = os.path.join(self.root_name,filename)
+
+        result = self.bucket.put_object(filename,content_str)
+
+        if result.status == 200:
+            url = os.path.join(self.domain,filename)
+        else:
+            url = ''
+
+        return url
+
+    def upload_from_local(self, localfile=None, ossfile=None):
+        '''
+        上传本地文件到oss
+        '''
+        ossfile = os.path.join(self.root_name, ossfile)
+
+        with open(localfile, 'rb') as fileobj:
+            result = self.bucket.put_object(ossfile, fileobj)
+
+        if result.status == 200:
+            url = os.path.join(self.domain, ossfile)
+        else:
+            url = ''
+
+        return url
+
+    def resumable_upload_from_local(self, localfile=None, ossfile=None):
+        ossfile = os.path.join(self.root_name, ossfile)
+
+        result = oss2.resumable_upload(self.bucket,ossfile,localfile,
+            store=oss2.ResumableStore(root='/tmp'), 
+            multipart_threshold=100*1024,
+            part_size=100*1024,
+            num_threads=4,
+        )
+
+        if result.status == 200:
+            url = os.path.join(self.domain,ossfile)
+        else:
+            url = ''
+
+        return url
+
+    def upload_from_url(self, url=None, ossfile=None):
+        '''
+        '''
+        ossfile = os.path.join(self.root_name,ossfile)
+        
+        resp = requests.get(url)
+
+        result = self.bucket.put_object(ossfile,resp)
+
+        if result.status == 200:
+            url = os.path.join(self.domain,ossfile)
+        else:
+            url = ''
+
+        return url
+
+if __name__ == '__main__':
+    myoss = MyOSS()
+
+    localfile = '/tmp/survey_qrcode_100.png'
+    ossfile = 'test/test.png'
+    url = myoss.resumable_upload_from_local(localfile,ossfile)
+    print url

BIN
static/upload/1611816819652.docx


BIN
static/upload/survey_bg_107.jpg