Data URI scheme何上传服务器
时间: 2024-07-26 14:01:00 浏览: 85
Data URI scheme是一种用于在网页上直接嵌入小量二进制数据(如图片、音频或视频)的方式,它将数据编码成Base64字符串,并将其作为URL的一部分。这种方式不需要额外的HTTP请求去服务器下载资源,因此适用于一些小型文件的本地存储或快速展示。
如果你想要使用Data URI上传到服务器,通常的做法是在服务器端处理这个特殊的URI。例如,在接收POST请求时,服务器解析URL中的Base64数据,解码后保存到数据库或文件系统中,而不是像常规的文件上传那样通过网络传输整个文件。
然而,需要注意的是,由于Data URI大小有限(最大约8KB),不适合大型文件上传。此外,如果数据频繁更新,频繁生成新的Data URI可能会增加服务器的压力。
相关问题
我的程序是这样的,class CosStore(): """ 腾讯云第三方存储 """ def init(self): c = C.config.get('cos', None) # 获取配置文件,腾讯云COS配置 # c = C.config['cos'] secretId = c['secretId'] secretKey = c['secretKey'] region = c['region'] # 服务器地区,广州 token = None scheme = 'https' config = CosConfig(Region=region, SecretId=secretId, SecretKey=secretKey, Token=token, Scheme=scheme) self.client = CosS3Client(config) self.bucket = c['bucket'] # 腾讯云COS,配置文件的,根目录,bucket: live-banner-prod-1303153810 self.uri = c['uri'] # 腾讯云COS,配置文件的,uri print('store文件-51行_init_函数 :', self.client) __signle = None @classmethod def build(cls): if not cls.__signle: cls.__signle = CosStore() print('store文件-59行-build函数 init :', cls.__signle) return cls.__signle def save(self, body, path): response = self.client.put_object( Bucket=self.bucket, # bucket=COS根目录 Body=body, # body=zip二进制文件 Key=path, # 云的 path=文件目录全路径 # StorageClass='STANDARD', # 需要一个bytes类型的对象,而不是'str' EnableMD5=False) url = self.uri + path print(f"store文件-第85行: url={url}, etag={response['ETag']}") return url 我是这样调用的 with open(r'D:\python\python_objkt\project\dbpick-banner-master\server\data\store\batch\100.zip', mode='rb') as f: # zip文件全路径 body = f.read() path = 'upload/20230608/3c2dda611576b5b8.zip' url = CosStore.build().save(body, path) 运行报错报错qcloud_cos.cos_exception.CosClientError: a bytes-like object is required, not 'str'
这个错误提示指出参数应该是 bytes 类型的对象,而不是 str 类型。你可以将打开文件的方式改为二进制模式,即将 `mode='r'` 改为 `mode='rb'`。这样就可以将文件以二进制的方式读取了。你可以将打开文件的部分修改为:
```
with open(r'D:\python\python_objkt\project\dbpick-banner-master\server\data\store\batch\100.zip', mode='rb') as f:
body = f.read()
path = 'upload/20230608/3c2dda611576b5b8.zip'
url = CosStore.build().save(body, path)
```
src: '/test/fixtures/code_128/image-001.jpg' // or 'data:image/jpg;base64,' + data 什么意思
这段代码中的 `src` 属性指定了一个图片文件的路径。`/test/fixtures/code_128/image-001.jpg` 是该图片在服务器上的相对路径。如果是 `data:image/jpg;base64,` 加上一段 base64 编码的数据,则表示该图片的数据被直接嵌入到了 HTML 或 CSS 中。这种方式称为 Data URI Scheme,可以避免网络请求,但会增加 HTML 或 CSS 文件的大小。
阅读全文