精华内容
下载资源
问答
  • 1.公司业务需求:将图片上传到oss,并且返回固定的图片路径: 利用的uuid來保證不id重複: 例如: /2020-11-05/1c62c18b-88d3-41d3-a6b1-d9046b8a4e94.jpghttp://oss.fapaifang.top/house/2020-11-12/4168e149-2983-42...

    1.公司业务需求:将图片上传到oss,并且返回固定的图片路径:

    利用的uuid來保證不id重複:
    例如:
    /2020-11-05/1c62c18b-88d3-41d3-a6b1-d9046b8a4e94.jpghttp://oss.fapaifang.top/house/2020-11-12/4168e149-2983-42a0-be99-ee83e5bcfeca.jpg

    2.源码如下:

    # -*- coding: utf-8 -*-
    """
     @Time   : 2020/10/29 9:54
     @Athor   : LinXiao
     @功能   :
    """
    # ------------------------------
    import datetime
    import io
    import uuid
    import requests
    import oss2
    
    # 储存的路径
    # filePath="/house/2020-10-29/xxxx.jpg"  # xxxxx 为随机uuid,防止重复
    # # 指定Bucket实例,所有文件相关的方法都需要通过Bucket实例来调用。
    # bucket=oss2.Bucket(oss2.Auth(access_key_id, access_key_secret), endpoint, bucket_name)
    
    # 连接oss
    def oss_parser(img, imageName, dirpath):
        endpoint='http://oss-cn-chengdu.aliyuncs.com'   # 在哪个城市就选那个城市的oss-cn
        access_key_id='LTAI4FzinZ***********'
        access_key_secret='x97sjRShDyn********Y1U8tPX'
        bucket_name='fzp-**********rm'
        # 指定Bucket实例,所有文件相关的方法都需要通过Bucket实例来调用。
        bucket=oss2.Bucket(oss2.Auth(access_key_id, access_key_secret), endpoint, bucket_name)
        result=bucket.put_object(f'{dirpath}/{imageName}', img.getvalue())
        # print('图片上传oss success!')
        return result.status
    
    # 上床成功并返回图片的链接
    def oss_deal_pic(url):
        # 测试的阿里云oss储存路径,正式的为house
        dirpath='house'
        domain='http://oss.fapai*****fang.top****************/'
        now=datetime.datetime.now()
        nonce=str(uuid.uuid4())
        random_name=now.strftime("%Y-%m-%d") + "/" + nonce
        imageName='{}.jpg'.format(random_name)
    
        img=io.BytesIO(requests.get(url, timeout=300).content)
        statusCode=oss_parser(img, imageName, dirpath)
        if statusCode == 200:
            new_oss_url=domain + dirpath + '/' + imageName
            # new_oss_url= '/' + imageName
            # print(new_oss_url)
            # print(type(new_oss_url))   # <class 'str'>
            return new_oss_url
    
    
    if __name__ == '__main__':
        # url='https://img.alicdn.com/bao/uploaded/i3/TB1LMGLiP39YK4jSZPctrBrUFXa_460x460.jpg'
        url='https://img.alicdn.com/bao/uploaded/i4/O1CN01CW2jEc1pOLaFef85M_!!0-paimai.jpg_460x460.jpg'
    
        oss_deal_pic(url)
        print(len("http://oss.fapaifang.top/house-test/2020-10-29/a12e11c9-d965-448b-b323-eb743d7ad327.jpg")) # 87的长度
        print(len("/2020-10-29/a12e11c9-d965-448b-b323-eb743d7ad327.jpg")) # 87的长度
        # 所以这里mysql的pic的字段的设置的默认长度应该是90x5 450个长度
    展开全文
  • 项目是使用tornado模块实现图片上传到本地虚拟服务器Python项目,主要是完成了上传功能和展示图片的功能,使用可以查看博客说明https://mp.csdn.net/mdeditor/101699797
  • python flask 上传文件到服务器

    千次阅读 2020-05-19 13:57:58
    今天要做一个简单的页面,可以实现将文件 上传到服务器(保存在指定文件夹) #Sample.py # coding:utf-8 from flask import Flask,render_template,request,redirect,url_for from werkzeug.utils import secure...

    今天要做一个简单的页面,可以实现将文件 上传到服务器(保存在指定文件夹)

    #Sample.py

    # coding:utf-8
    
    from flask import Flask,render_template,request,redirect,url_for
    from werkzeug.utils import secure_filename
    import os
    
    app = Flask(__name__)
    
    @app.route('/upload', methods=['POST', 'GET'])
    def upload():
        if request.method == 'POST':
            f = request.files['file']
            basepath = os.path.dirname(__file__)  # 当前文件所在路径
            upload_path = os.path.join(basepath, 'static\uploads',secure_filename(f.filename))  #注意:没有的文件夹一定要先创建,不然会提示没有该路径
            f.save(upload_path)
            return redirect(url_for('upload'))
        return render_template('upload.html')
    
    if __name__ == '__main__':
        app.run(debug=True)

     

    #upload.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <h1>文件上传示例</h1>
        <form action="" enctype='multipart/form-data' method='POST'>
            <input type="file" name="file">
            <input type="submit" value="上传">
        </form>
    </body>
    </html>

    这里要注意:<form>标签里的enctype属性一定要填写'multipart/form-data'

    意思是不加密,上传文件的时候一定要选这个,不然不行

    好了接下来我们看看运行效果

    1. 初始界面

    2. 选择一个文件,点击上传

     3. 最后网页会回到初始界面,然后上传的文件,也保存在我们指定的目录上了

    至此,项目结束

     

     

    展开全文
  • 使用ssh登录,然后将指定目录中的图片上传到服务器指定目录 网上搜了很多方法都没用,最后终于碰到一个可以成功上传的,特此记录 import paramiko # 用于调用scp命令 from scp import SCPClient # 将指定目录的图片...
  • 上次实验了图片上传方式把客户端图片保存到服务器的方法 这次经过实验实现了画板图片直接上传到服务器并保存的方法 只要验证了几个概念 js端:base64传送,json传送,XMLHttpRequest,$.ajax( python后端 接受...

    上次实验了图片上传方式把客户端图片保存到服务器的方法

    这次经过实验实现了画板图片直接上传到服务器并保存的方法

    只要验证了几个概念

    js端:base64传送,json传送,XMLHttpRequest,$.ajax(

    python后端 接受  request.get_json request.get_data()

     

    言归正传

    环境:mac python3,js  chrome浏览器

     

    前端 引入jquery

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta charset="UTF-8">
        <!--<script src="https://code.jquery.com/jquery-3.1.1.min.js">-->
        <!--</script>-->
        <script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.js"></script>
        <title>Document</title>
        <style type="text/css">
            canvas {
                border: 1px solid green;
            }
        </style>
    </head>
    <body>

    画板代码 简化处理,本章不对画板的变幻莫测做说明,只需好最简单部分

    主要知道创建了个一个画布 canvas = document.getElementById('drawing-board')

    <canvas id="drawing-board" width="400" height="300"></canvas>
    <script type="text/javascript">
        //创建画布
        var canvas = document.getElementById('drawing-board');
        var ctx = canvas.getContext('2d');
    
        //设置当前画布为画笔状态
        var painting = false;
        var lastPoint = {x: undefined, y: undefined};
        var last = null;
    
        // 鼠标按下
        canvas.onmousedown = function () {
            // 在鼠标按下后触发鼠标移动事件
            canvas.onmousemove = move;
        };
        // 鼠标抬起取消鼠标移动的事件
        canvas.onmouseup = function () {
            canvas.onmousemove = null;
            last = null;
        };
        // 鼠标移出画布时 移动事件也要取消。
        canvas.onmouseout = function () {
            canvas.onmousemove = null;
            last = null;
        };
        // 鼠标移动函数
        function move(e) {
            // console.log(e.offsetX);
            if (last != null) {
                ctx.beginPath();
                ctx.moveTo(last[0], last[1]);
                ctx.lineTo(e.offsetX, e.offsetY);
                ctx.stroke();
            }
            // 第一次触发这个函数,只做一件事,把当前 鼠标的 x , y 的位置记录下来
            // 做下一次 线段的 起始点。
            last = [e.offsetX, e.offsetY];
        }
    </script>

    下面直接保存画板

    有两种方法:

    通过ajax 传送到后台对应:request.get_data()  

    通过XMLHttpRequest 传送到后台对应:request.get_json()

    取得画板的元素转成base64位
    var imgUrl = canvas.toDataURL("image/png");
    截取22未开始的字节(把图片头部去掉)这个处理在后台也可以 var imageDataB64 = imgUrl.substring(22);
    定义json格式并字节转换 imgData = {uploadImg:imageDataB64}; var senddata = JSON.stringify(imgData);

    <button onclick="canvasSaveToServer()">保存画板</button>
    <script type="text/javascript">
        //保存画板
        function canvasSaveToServer() {
            var imgUrl = canvas.toDataURL("image/png");
            var imageDataB64 = imgUrl.substring(22);
            alert("savePic" + imageDataB64);
    
            imgData = {uploadImg:imageDataB64};
            var senddata = JSON.stringify(imgData);
    
            //通过XMLHttpRequest 传送到后台
            var xhr = new XMLHttpRequest();
            xhr.open("POST", "/uploadcanvas", true);
            xhr.setRequestHeader('content-type', 'application/json');
            xhr.send(JSON.stringify(senddata));
    
            //方法二:通过ajax 传送到后台
    
            // $.ajax({
            //     url: "/uploadcanvas",
            //     type: "POST",
            //     //data: { "uploadImg": imageDataB64},
            //     data:senddata,
            //     async: true,
            //     cashe: false,
            //     contentType: false,
            //     processData: false,
            //     success: function (returndata) {
            //         alert("success!")
            //     },
            //     error: function (returndata) {
            //         alert("上传失败!")
            //     }
            // })
    
        }
    </script>

    后端代码:app.py

    注意  request.get_data()和request.get_json()的不同,与前端分别对应

    from flask import Flask, make_response, jsonify, request
    import json
    import base64
    app = Flask(__name__)
    
    @app.route('/canvasTest')
    def canvasTest():
        return app.send_static_file('testCanvas.html')
    
    @app.route('/uploadcanvas', methods=["POST"])
    def uploadFromCanvas():
        print('uploadFromCanvas')
        print('request.method =',request.method)
        if request.method == "POST":
            #通过get_data方式
            #recv_data = request.get_data()
            # 通过get_json方式
            recv_data = request.get_json()
    
            if recv_data is None:
                print("request.get_json() is None")
                recv_data = request.get_data()
    
            print("recv_data=", recv_data)
            json_re = json.loads(recv_data)
            print("json_re=", json_re)
            imgRes = json_re['uploadImg']
            print("imgRes=",imgRes)
    
            imgdata = base64.b64decode(imgRes)
            print("imgdata=",imgdata)
    
            file = open('1.jpg', "wb")
            file.write(imgdata)
            file.close()
            return '<h1>Hello~~~:%s</h1>' % 100
    
    
    if __name__ == '__main__':
        app.run()

    测试 http://127.0.0.1:5000/canvasTest

    展开全文
  • Python 上传图片到OneNet

    千次阅读 2017-10-24 09:12:10
    Python 上传图片到OneNet 最近参加了中国移动创客马拉松,需要用到OneNet平台。由于要向平台上传图片,所以写了这段代码。 1、使用postman发送post请求使用post方法,在URL栏中填写指定的URL; 在Headers中添加api...

    Python 上传图片到OneNet

    最近参加了中国移动创客马拉松,需要用到OneNet平台。由于要向平台上传图片,所以写了这段代码。

    1、使用postman发送post请求

    使用post方法,在URL栏中填写指定的URL;
    在Headers中添加api-key;
    在Body中选择binary(二进制数据),并指定文件1.jpg

    然后点击Send,发送这段数据,得到的返回结果是一串字符串:

    {
        "errno": 0, # 0表示成功
        "data": { # 服务器返回的数据
            "index": "**************" #post数据成功后,服务器返回数据的索引index 
        },
        "error": "succ" # 成功
    }

    这里写图片描述

    这里写图片描述


    2、用python代码实现上述过程

    下面这段代码首先定义了http的header,在header中定义了Content-Type和api-key。其中,Content-type不指定也是可以的;api-key则必须要指定,因为是OneNet平台要求的鉴权。在使用OneNET Restful API时,HTTP请求消息的头域必须携带该APIKey字段,OneNET会依据APIKey字段判别该用户是否具有对应操作的权限。

    然后在参数中,指定了device_id和datastream_id。Restful API请见下表:

    HTTP方法 POST
    URL http:///bindata
    HTTP头部 api-key:xxxx-ffff-zzzzz,数据流 Key
    URL参数 device_id,必选,该数据所属设备。
    datastream_id,必选,该数据所属数据流
    HTTP内容 普通二进制数据、文件、图像
    请求返回 {
      ”errno”: 0,
      ”error”:“succ”,
      ”data”:{
        //该数据在设备云的索引
        ”index”:“AJOWFW1133OFO2Z93”
      }
    }



    接着以二进制的形式读取图片数据,并使用request库以二进制流的形式上传数据。requests支持流式上传,允许发送大数据流文件,无需预先把数据读入到文件。具体可见request的文档:

    这里写图片描述

    solution.py

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    
    import requests
    
    url = "http://api.heclouds.com/bindata"
    
    headers = {
        "Content-Type": "image/jpg", # 
        "api-key": "*************", # 你的api-key
    }
    
    # device_id是你的设备id
    # datastream_id是你的数据流id
    querystring = {"device_id": "****", "datastream_id": "******"}
    
    # 流式上传
    with open('timg.jpg', 'rb') as f:
        requests.post(url, params=querystring, headers=headers, data=f)
    
    print('success')

    接下来就能在平台上看到我们上传的图片了。

    这里写图片描述

    参考:http://docs.python-requests.org/zh_CN/latest/user/advanced.html#advanced

    这里写图片描述

    展开全文
  • 原理:使用requests库的post方法上传文件至服务器,后台接收并保存文件 1.post上传文件 自己新建一个py文件,把代码复制文件里,view.py里相应函数后运行 import requests #url注意换成自己请求的应用对应的...
  • Python调用scp向服务器上传文件

    万次阅读 2019-03-07 11:59:27
    最近做的项目中有一个小功能:在python中... 使用ssh登录,然后将指定目录中的图片上传到服务器指定目录 网上搜了很多方法都没用,最后终于碰到一个可以成功上传的,特此记录 import paramiko # 用于调用...
  • filename = "1.jpg"#你要上传的文件的名字,我这里是上传图片,这个图片是本地的 file_handle=open(filename,"rd") ftp.storbinary("STOR test.jpg",file_handle,bufsize)#STOR是上传的命令,然后将你上传的文件...
  • python- FTP 实现上传文件到服务器

    万次阅读 2018-11-26 15:49:36
    现在已经有很多工具如 Xshell 里带的xftp 、filezilla 等工具可以上传文件Linux系统服务器,linux 自带的 rz 都能把本地电脑文件上传到Linux系统服务器 玩下,利用python 编写脚本ftp脚本把一些文件上传上去 #...
  • python上传图片到oss

    2021-04-27 20:33:55
    import oss2 import requests def oss(oss_save_path, your_img_path): auth = oss2.Auth('LTA_key', 'secret') endpoint = 'endpoint' bucket = oss2.Bucket(auth, endpoint, 'your_bucket_name') ...
  • 【芝麻IP代理】大数据时代下,我们对于Python的应用真的是...今天就来详细说说Python是怎么远程连接windows服务器上传数据的?1、先在服务器上搭建SSH sever用的是freesshd,下载链接:freeSSHd.exe先下载freeSSH...
  • #----图片上传 def otherimgupload(request): timepath=time.strftime('%Y/%m/%d/',time.localtime(time.time())) nowtime=int(time.time()) hostname = socket.gethostname() if requ...
  • 小程序实现上传图片到python服务器 预览 老规矩,先上demo。 额。。。。 忘了,这次情况特殊没有demo,看预览图吧: 小程序前端 获取用户信息,openId,用作生成用户专属图片文件夹 要生成unionId,需要知道自己...
  • python上传字符和二进制的文件PHP服务器本主要介绍通过Python向php服务器传数据的代码实现上传简单的字符串def send_str_server(self): payload = {'key1': 'value1', 'key2': 'value2'} r = requests.post(...
  • 考虑到图片应用服务器上会导致应用服务器卡顿,所以把图片存储oss上,但是文件太多就很麻烦了,他仅仅支持批量一百张,单次,而且会很卡顿。 安装OSS2 操作pip3 install oss2 即可 扫描多个目录收集...
  • python post方式 上传文件php服务器

    千次阅读 2016-07-18 13:29:57
    通过python调用php实现了文件上传 与大家分享一下: 首先要通过pip安装poster(easy_install 也是一样的): pip install poster image.py #!usr/bin/python # image.py # -*- coding=utf-8 -*- ...
  • python发送文件到服务器

    千次阅读 2019-05-11 18:44:51
    需求:django后台收到文件后,将该文件发送别的服务器上 第一次接触,功能感觉和linux中的scp命令一样,于是百度查了下python能否实现scp命令,发现是通过python中的paramiko模块来实现的,具体实现的代码如下: ...
  • for deviceid in range(5,9): print api.rt_get_rec_count(dbname);#获取底库数据条数。 path = "/home/boyun/tusou_ise/reid_yanshi_images/device%s"%(deviceid) print("path:", path) dirs = os.listdir...
  • IOS上传图片到服务器

    2015-03-16 11:05:12
    方便快速的实现在ios移动端上传图片到服务器 同时附录服务器python代码,使用了flask构建小型服务器
  • python+django上传图片到微信 此功能是先把网络图片上传七牛云服务器,再获取图片路径,上传微信。 上传微信需要公众号的token和cookie也就是说,需要有公众号登录来获取这两个值。 首先我这个代码是在项目中...
  • 通过python调用php实现了文件上传 与大家分享一下:  首先要通过pip安装poster(easy_install 也是一样的): 1 pip install poster   image.py:
  • 将图像从Android上传到基于Python的Flask服务器 该存储库包含2个主要文件夹: AndroidClient :代表Android Studio项目,该项目构建作为客户端工作的Android应用程序。 FlaskServer :使用Flask的基于Python的...
  • 如题,url地址确认了没有问题,但是一直都是服务器未响应404,非常奇怪 源码如下 WebClient wc = new WebClient(); wc.Credentials = CredentialCache.DefaultCredentials; FileStream fs = new FileStream...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 29,183
精华内容 11,673
关键字:

python上传图片到服务器

python 订阅