Beispiel #1
0
 def saveFile(self, file_path, file_name, bytes):
     path = Url(output + file_path)
     path = path.addUrlEnd()
     if not os.path.exists(path):
         os.makedirs(path)
     try:
         f = open(path + file_name, "wb")
         f.write(bytes)
         f.close()
     except IOError, e:
         print 'save Error: ', e, 'path: ', path, 'name: ', file_name
Beispiel #2
0
 def saveFile(self, file_path, file_name, bytes):
     path = Url(output + file_path)
     path = path.addUrlEnd()
     if not os.path.exists(path):
         os.makedirs(path)
     try:
         f = open(path + file_name, "wb")
         f.write(bytes)
         f.close()
     except IOError, e:
         print 'save Error: ', e, 'path: ', path, 'name: ', file_name
Beispiel #3
0
    def dealUrl2File(self, url, origin, host=None, is_req_url=False):
        """
        :param
            url: 待处理的url
            origin: 请求发生时所在的url
            host: 对于域名为host的url,资源存放目录为output根目录,而不是域名文件夹。默认不设置主host
            is_req_url: url是否做过 dealUrl2Request 处理

        :return
        """

        if not is_req_url:
            url = self.dealUrl2Request(url, origin)
        # url = self.simplifyUrl(url)
        # url除去最后的/
        url = url.delUrlEnd()

        if host is not None:
            # 如果该url就是这个站点域名下的,那么无需新建域名目录存放
            if url.cmpHost(host):
                # 除去host 这里有可能超出output根目录
                url = url.delHttp()
                url = url.delUrlStart()
                url = url.replace(host.getHost()[1], '')
        # 除去头,变身成文件路径
        url = url.delHttp()
        url = url.delUrlStart()
        for k, v in self.replaceChr.iteritems():
            if k in url:
                url = url.replace(k, v)


        file_name = Url(os.path.basename(url))
        file_path = Url(os.path.dirname(url))
        # 如果文件名或文件路径过长
        file_path, file_name = self.convLongPath(file_path, file_name)

        # if file_path.startswith('/') or file_path.startswith('.'):
        #     file_path = file_path[1:]
        # 为了解决同一目录下,文件和文件夹名不能重复的问题
        if file_name != '':
            file_name = 'f_'+file_name
        url = file_path.addUrlEnd() + file_name
        url = url.addUrlStart()

        # 当file_path为""时,表示当前目录
        return file_path, file_name, url
Beispiel #4
0
    def dealUrl2File(self, url, origin, host=None, is_req_url=False):
        """
        :param
            url: 待处理的url
            origin: 请求发生时所在的url
            host: 对于域名为host的url,资源存放目录为output根目录,而不是域名文件夹。默认不设置主host
            is_req_url: url是否做过 dealUrl2Request 处理

        :return
        """

        if not is_req_url:
            url = self.dealUrl2Request(url, origin)
        # url = self.simplifyUrl(url)
        # url除去最后的/
        url = url.delUrlEnd()

        if host is not None:
            # 如果该url就是这个站点域名下的,那么无需新建域名目录存放
            if url.cmpHost(host):
                # 除去host 这里有可能超出output根目录
                url = url.delHttp()
                url = url.delUrlStart()
                url = url.replace(host.getHost()[1], '')
        # 除去头,变身成文件路径
        url = url.delHttp()
        url = url.delUrlStart()
        for k, v in self.replaceChr.iteritems():
            if k in url:
                url = url.replace(k, v)

        file_name = Url(os.path.basename(url))
        file_path = Url(os.path.dirname(url))
        # 如果文件名或文件路径过长
        file_path, file_name = self.convLongPath(file_path, file_name)

        # if file_path.startswith('/') or file_path.startswith('.'):
        #     file_path = file_path[1:]
        # 为了解决同一目录下,文件和文件夹名不能重复的问题
        if file_name != '':
            file_name = 'f_' + file_name
        url = file_path.addUrlEnd() + file_name
        url = url.addUrlStart()

        # 当file_path为""时,表示当前目录
        return file_path, file_name, url