您的位置:首页 > 编程语言 > Go语言

django 上传文件(图片)

2019-03-29 17:09 96 查看
  1. 使用

    <input type="file" name="file">
    上传文件, 而且需要注意form中必须设置enctype="multipart/form-data"才能上传文件,否则上传的内容为None

    <form name="form1" method="POST" action="/chg_profile/" enctype="multipart/form-data">
    {% csrf_token %}
    <p><span>&nbsp;</span><input type="file" name="avatar" text="修改头像"></p>
    <P><span>&nbsp;</span><button>提交</button>
    <form>
  2. 在后台使用f = request.FILES.get(“avatar”) 获取文件对象,(这里的文件是头像avatar,所以get的参数为input的name “avatar”) 使用f.name获取文件名称. 然后使用open函数把文件写入到正确的文件夹下:

    sbmt_avatar = request.FILES.get('avatar')
    avatar_suffix = sbmt_avatar.name.split(".")[-1]  #获取后缀
    import os
    avatar_path = "static/avatar/"+sbmt_username+ "." +avatar_suffix  # 构造文件路径
    with open(os.path.join(BASE_DIR, avatar_path), "wb") as f:
    for line in sbmt_avatar:
    f.write(line)
    因为模板文件和static文件没在同一个文件夹下,所以数据库中保存路径时,还要修改成正确的路径../static/avatar/username.png
  3. 关于

    os.path.join(path1,path2,path3....)

    结果如下()环境为linux)路径如果是/开头,则前面的路径会被忽略,如果是./(点斜杠)开头,则前面的路径也会加上(如果b为点斜杠b(./b), c为斜杠c(/c),最终结果会以c为标准,即丢掉前面的路径,只返回斜杠c(/c), 反过来,b为斜杠b(/b),c为点斜杠c(./c),则抛弃/b前面的路径,返回/b/./c, 如下)

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: