白冥 发表于 2024-4-25 00:49:03

基于Python Flask框架的一键保存为txt文件的两段代码

本帖最后由 白冥 于 2024-4-25 12:55 编辑

我们用一个20*50大小的文本域(textarea)写日志,指定文件名,并由fetchAPI发送为json
from flask import Flask, request,jsonify,json
from flask_cors import CORS
import os
cwd=os.getcwd()
dst=cwd+'/Logs/'
if os.path.isdir(dst):
    pass
else:
    os.makedirs(dst)
app=Flask(__name__)
cors=CORS(app,resources={r"/*":{"origins":"*"}})
@app.route('/save_log',methods=['POST','OPTIONS','GET'])
def save_log():
    data=request.data
    if data:
      message=json.loads(data)
      with open(dst+message['filename']+'.txt','w') as f:
            f.write(message['log'])
    else:
      pass
    returnjsonify({"信息":"已成功上传为txt文件"})
if __name__ == '__main__':
    app.run(debug=True)
由于Python Flask框架默认监视端口为5000,所以前端部分要完整给出,由于在本机,所以用的是巡回地址。
写这段代码的时候遇到过不少问题,比如CORS越域,不得不再下载个flask-corsPython包,而在处理时候,还遇到过http请求有三个却只有一个有内容导致json反序列化失败的现象,干脆有才反序列化,没有直接pass过去。
由于我发的时候发现发这里代码好像没有缩进,所以给加了空格,但不能保证发出来空格在不在。python对缩进有严格要求,所以如果大家看到发出来没有缩进,我也没办法。

tjw2469 发表于 2024-4-25 00:59:49

不懂就问
这是啥?

koh 发表于 2024-4-25 01:02:01

如果是便利的东西,建议发在code区

轮回2L 发表于 2024-4-25 01:03:12

感觉是很方便的东西惹,就素看不懂orz

凯诺斯 发表于 2024-4-25 01:03:47

看起来挺强大的代码惹,好专业的感觉{:6_169:}

娱乐法师火布偶 发表于 2024-4-25 01:18:56

楼主的意思是要求助一个人看看代码吗?如果是求助,那需要发悬赏帖的

thh866 发表于 2024-4-25 01:35:25

感觉贴上效果图对用法更容易理解一些

Kansen 发表于 2024-4-25 01:49:31

讨论一下啊


看了一下代码,其实如果只是本地的话,不需要去解决cors的问题。

@app.route('/')

然后把你的html作为静态页面输出就行了。这样就是同域了。

另外就是这个功能我感觉其实不需要用到flask,纯前端就能完成。

我随便找了个现成代码改了改差不多就是这样了

<html>
<head>
<meta charset="utf-8">
<title>保存文本文件到本地</title>
</head>
<body>
<textarea id="json" value="qqq"></textarea>
<input id="filename" placeholder="文件名" />
<button id="save">保存</button>
</body>
<script type="text/javascript">
    createAndDownloadFile=function(fileName, content) {
      const aTag = document.createElement('a');
      const blob = new Blob();
      aTag.download = fileName;
      aTag.href = URL.createObjectURL(blob);
      aTag.click();
      URL.revokeObjectURL(aTag.href);
    }
    const save=document.querySelector("#save");
    save.addEventListener("click",function(){
      const filename = document.querySelector('#filename')?.value
      const content = document.querySelector('#json')?.value
      try {
         JSON.parse(content)
         createAndDownloadFile(filename ,content);
       } catch (e) {
          console.log(e)
       }
    });
</script>
</html>



Riverlethe 发表于 2024-4-25 02:06:56

看不懂……但是不妨碍请收下我的膝盖……

ngver 发表于 2024-4-25 02:41:25

不懂就问,这是针对什么场景的呀{:4_88:}

Freeze123 发表于 2024-4-25 02:47:34

和用word打一段文字并保存的区别素?

除却巫山不是云 发表于 2024-4-25 03:07:11

自动保存文本看起来很方便感谢楼主分享

前方无怪 发表于 2024-4-25 03:41:03

看起来有点复杂,但还是先收藏一下做个标记嘿嘿,以备不时之需~

毛茸茸兽兽 发表于 2024-4-25 03:49:16

吼(´×ω×`)看不懂但大受震惊
这是游戏存档也能保存为txt格式的意思咩(´×ω×`)

相见忧 发表于 2024-4-25 05:55:09

虽然看不懂,但是感觉好厉害的样子:o
佩服佩服

大臣 发表于 2024-4-25 07:07:10

看起来很厉害的样子,有机会下载来试试用,感谢分享。

you9632587 发表于 2024-4-25 07:42:45

一键保存能防止一些意外情况还是挺好的啊

山涧轶闻 发表于 2024-4-25 08:03:22

没有看得很懂呢,要是再能解释的更清楚就好了{:6_164:}

书の妖怪 发表于 2024-4-25 08:30:42

相关内容更建议发布在CODE专区,已将帖子移动至对应版块,请楼主下次发帖前务必注意论坛规范,发布至对应版块

ccczpoa 发表于 2024-4-25 08:44:48

看的不是很懂,只能默默的仰慕大佬了
页: [1] 2
查看完整版本: 基于Python Flask框架的一键保存为txt文件的两段代码