Python上传图片到七牛云储存代码

教程介绍

Python上传图片到七牛云储存代码,Typora将图片上传到七牛云对象存储中(访问速度快),七牛云免费10G。

Python代码分享

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

#!/usr/bin/env python3

# -*- encoding: utf-8 -*-

# author: gflik

# data: 2022.10.09

import uuid

import requests

import sys

from qiniu import Auth, put_file, etag, put_data

class UploadClient:

    def __init__(self):

        # 需要修改一下两行!

         

        access_key="access_key"

        secret_key="secret_key"

         

         

        # 构建鉴权对象

        self.auth= Auth(access_key, secret_key)

        self.bucket_name="82coco"

    def upload(self,data):

        """

        上传二进制数据到七牛云

        :param data: 二进制数据

        :return:

        """

        # 上传后保存的文件名

        # 如果不指定保存的文件名称,七牛云会自动生成一个唯一的图片名称

        # 哈希值

        key = 'markdown_img/{}.png'.format(str(uuid.uuid4()).replace("-",""))

        # 生成上传 Token,可以指定过期时间等 3600单位是s

        token = self.auth.upload_token(self.bucket_name, key, 3600 * 24)

        # 要上传文件的本地路径

        # 将图片二进制数据上传到七牛云

        ret, info = put_data(token, key, data)

        # print(ret)

        # print(info)

        if info.status_code == 200:

            # 上传图片成功

            # 拼接完整url地址

            full_url = "http://cdn.82coco.cn/"+ ret["key"]

            return full_url

        else:

            # 封装好的工具类异常需要抛出,不能私自解决异常 否则外界调用遇到异常没法解决

            raise Exception(info.exception)

    def upload_img(self,file_list:list):

        for img in file_list:

            # 先判断传过来的是本地路径还是远程图片地址

            if "http" == img[:4]:

                # 非本地图片的话可以考虑下载到本地再上传,但是没这个必要

                print(img)

                continue

            else:

                try:

                    print(self.upload(open(img,"rb")))

                except:

                    print(img + "\t上传失败")

if __name__ == '__main__':

    if len(sys.argv) < 2:

        print("call error,wrong image format")

        sys.exit(1)

    # print(sys.argv)

    client=UploadClient()

    client.upload_img(sys.argv[1:])

使用方法

将此代码解压放入Typora根目录

打开代码修改accesskey 与 secretkey(需注册七牛云账号)

打开Typora - 文件 - 偏好设置 - 图像

1

[img=110,0]https://attach.hu6.cc/forum/202211/18/015825cbh548j1wotw5wt1.png?l[/img]

按照上述图片填入

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 答:``` <!DOCTYPE html> <html> <head> <title>Layui上传图片七牛云</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <link rel="stylesheet" href="https://cdn.staticfile.org/layui/2.5.6/css/layui.css"> </head> <body> <div class="layui-upload"> <button type="button" class="layui-btn" id="upload">上传图片</button> <div class="layui-upload-list"> <img class="layui-upload-img" id="demo1"> <p id="demoText"></p> </div> </div> <script src="https://cdn.staticfile.org/jquery/3.4.1/jquery.min.js"></script> <script src="https://cdn.staticfile.org/layui/2.5.6/layui.js"></script> <script src="https://cdn.staticfile.org/qiniu-js/1.0.15/qiniu.min.js"></script> <script> //获取七牛上传凭证 $.get("你的获取七牛上传凭证接口", function (data) { var token = data.token; var config = { useCdnDomain: true, region: qiniu.region.z2 }; var putExtra = { fname: "", params: {}, mimeType: ["image/png", "image/jpeg", "image/gif"] }; var observer = { next(res){ console.log(res) }, error(err){ console.log(err) }, complete(res){ console.log(res); } } var observable = qiniu.upload(file, key, token, putExtra, config); var subscription = observable.subscribe(observer); // 上传开始 //取消上传 //subscription.unsubscribe(); }); </script> </body> </html> ``` ### 回答2: 使用Layui和七牛云上传图片代码如下: 首先,确保在页面中引入Layui和七牛云SDK的相关文件: ```html <link rel="stylesheet" href="https://cdn.staticfile.org/layui/2.5.6/css/layui.css"> <script src="https://cdn.staticfile.org/layui/2.5.6/layui.js"></script> <script src="https://cdn.staticfile.org/qiniu-js/1.0.23/qiniu.min.js"></script> ``` 然后,在HTML中创建一个用于上传图片的按钮和一个用于显示图片预览的区域: ```html <input type="file" name="image" id="upload"> <div id="preview"></div> <button class="layui-btn" lay-submit lay-filter="upload">上传图片</button> ``` 接下来,在JavaScript中编写Layui的代码,包括上传图片和显示预览图片的逻辑: ```javascript layui.use(['form'], function(){ var form = layui.form; // 初始化七牛云的参数 var uploader = Qiniu.uploader({ runtimes: 'html5', browse_button: 'upload', uptoken_url: '/your/uptoken/url', // 请求服务器获取上传凭证的URL domain: 'http://your-qiniu-domain.com', // 七牛云的空间域名 get_new_uptoken: false, auto_start: false, unique_names: true, filters: { mime_types: [ {title: "Image files", extensions: "jpg,jpeg,png"} ] }, init: { FileUploaded: function(up, file, info) { // 上传完成后,将图片的URL添加到预览区域 var imageUrl = up.getOption('domain') + '/' + file.name; $('#preview').append('<img src="' + imageUrl + '">'); } } }); // 监听上传按钮的点击事件 form.on('submit(upload)', function(){ // 清空预览区域的内容 $('#preview').empty(); // 开始上传图片 uploader.start(); // 阻止表单的默认提交行为 return false; }); }); ``` 其中,`uptoken_url`是服务器端用于获取上传凭证的接口URL,需要根据实际情况进行配置。 通过以上代码,当用户选择图片文件并点击上传按钮时,会将图片上传到七牛云,并将上传完成后的图片在预览区域进行显示。 ### 回答3: 使用 layui 上传图片七牛云代码如下: HTML部分: ```html <div class="layui-upload"> <button type="button" class="layui-btn" id="upload">上传图片</button> <input type="hidden" id="qiniuToken" value="" /> <input type="hidden" id="qiniuDomain" value="" /> <div class="layui-upload-list"> <img class="layui-upload-img" id="uploadImage"> <p id="uploadText"></p> </div> </div> ``` JavaScript部分: ```javascript layui.use('upload', function(){ var upload = layui.upload; // 初始化七牛云参数 var qiniuToken = ''; // 七牛云上传凭证 var qiniuDomain = ''; // 七牛云上传域名 // 获取七牛云上传凭证和域名 // 这一部分需要在后端获取,并且将值填入上面的两个变量 // 创建上传实例 var uploadInst = upload.render({ elem: '#upload', // 上传按钮的id url: qiniuDomain, // 七牛云上传域名 headers: { 'Authorization': 'UpToken ' + qiniuToken // 添加七牛云上传凭证 }, done: function(res){ // 上传完毕回调 console.log(res); if(res.code === 0){ $('#uploadImage').attr('src', res.data.src); // 将上传成功的图片显示在页面上 $('#uploadText').text('上传成功'); } else { $('#uploadText').text('上传失败'); } }, error: function(){ // 请求异常回调 $('#uploadText').text('上传失败'); } }); }); ``` 这是一个使用 layui 框架的图片上传功能,使用了 layui 的 upload 模块来实现图片上传功能。首先需要在 HTML 中设置上传按钮的id,然后引入 layui 的 upload 模块并初始化实例。在 JavaScript 部分,我们通过获取七牛云的上传凭证和域名,将其填入相应的变量中。然后在创建上传实例时,设置上传按钮的id、七牛云上传域名和上传凭证等参数,以及上传成功和失败的回调函数用于处理上传结果。上传按钮被点击后,会触发上传操作,上传成功后通过回调函数将上传成功的图片显示在页面上。 以上代码仅为示例,需要根据具体的七牛云配置进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

执刀人的工具库

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值