{"id":169242,"date":"2022-04-19T06:27:31","date_gmt":"2022-04-18T22:27:31","guid":{"rendered":"http:\/\/www.idc.net\/help\/169242\/"},"modified":"2022-04-19T06:27:31","modified_gmt":"2022-04-18T22:27:31","slug":"%e5%90%8e%e6%b5%aa%e4%ba%91python%e6%95%99%e7%a8%8b%ef%bc%9apython%e6%80%8e%e4%b9%88%e5%ae%9e%e7%8e%b0%e6%96%87%e4%bb%b6%e4%b8%8a%e4%bc%a0%e7%95%8c%e9%9d%a2","status":"publish","type":"post","link":"https:\/\/idc.net\/help\/169242\/","title":{"rendered":"\u540e\u6d6a\u4e91Python\u6559\u7a0b\uff1apython\u600e\u4e48\u5b9e\u73b0\u6587\u4ef6\u4e0a\u4f20\u754c\u9762"},"content":{"rendered":"<p style=\"text-align: center\"><img decoding=\"async\" src=\"https:\/\/oss.py.cn\/pycn\/upload\/article\/000\/000\/003\/5d88222213254952.jpg\" class=\"aligncenter\"><\/p>\n<p>\u672c\u6587\u7ae0\u4ee3\u7801\u4e0a\u4f20\u5728\u7801\u4e91\u4e0a<\/p>\n<p><strong>\u4ee3\u7801\u5730\u5740<\/strong><\/p>\n<pre>git@gitee.com:DanYuJie\/upanddown.git<\/pre>\n<p><strong>\u8fd9\u91cc\u6211\u4eec\u4f7f\u7528flask\u6846\u67b6\uff0c\u7b80\u5355\u5b9e\u7528<\/strong><\/p>\n<pre>\u76ee\u5f55\u7ed3\u6784\uff1a\nupandown\/\n&nbsp;&nbsp;&nbsp;&nbsp;static\/\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;css\/\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;js\/\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jquery.min.js\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;toastr.min.js\n&nbsp;&nbsp;&nbsp;&nbsp;templates\/\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index.html\n&nbsp;&nbsp;&nbsp;&nbsp;test.py<\/pre>\n<p>\u76f8\u5173\u63a8\u8350\uff1a\u300aPython\u57fa\u7840\u6559\u7a0b\u300b<\/p>\n<p><strong>\u9996\u5148\u6211\u4eec\u9700\u8981\u4e00\u4e2a\u9875\u9762\u5728templates\/index.html(\u8fd9\u91cc\u4f7f\u7528form\u8868\u5355\u5b9e\u73b0)<\/strong><\/p>\n<pre>&lt;!DOCTYPE&nbsp;html&gt;\n&lt;html&gt;\n&lt;head&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta&nbsp;charset=\"UTF-8\"&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta&nbsp;name=\"viewport\"&nbsp;content=\"width=device-width,&nbsp;initial-scale=1.0\"&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta&nbsp;http-equiv=\"X-UA-Compatible\"&nbsp;content=\"ie=edge\"&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;link&nbsp;rel=\"stylesheet\"&nbsp;href=\"..\/static\/css\/toastr.min.css\"&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;script&nbsp;src=\"..\/static\/js\/jquery.min.js\"&gt;&lt;\/script&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;script&nbsp;src=\"..\/static\/js\/toastr.min.js\"&gt;&lt;\/script&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;Document&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;form&nbsp;method=\"POST\"&nbsp;action=\"\/upload\"&nbsp;enctype=\"multipart\/form-data\"&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input&nbsp;type=\"file\"&nbsp;name=\"file\"&nbsp;id=\"file\"&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input&nbsp;type=\"submit\"&nbsp;value=\"upload\"&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;a&nbsp;href=\"\"&gt;&lt;\/a&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/form&gt;&lt;hr&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;ol&nbsp;id=\"filelist\"&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/ol&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;script&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;checkstatus(){\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if('{{status}}'==&nbsp;'OK'){\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;toastr['success'](\"\u4e0a\u4f20\u6210\u529f\");\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else&nbsp;if('{{status}}'==&nbsp;'null'){\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;toastr['error'](\"\u4e0a\u4f20\u5931\u8d25\");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;get_list(){\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.ajax({\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url:'\/getlist',\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type:'GET',\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;success:function(result){\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;len_result&nbsp;=&nbsp;result.length;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(var&nbsp;x&nbsp;=0;&nbsp;x&nbsp;&lt;&nbsp;len_result;&nbsp;x++){\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(\"#filelist\").append('&lt;br&gt;&lt;a&nbsp;href=\/download\/'&nbsp;+&nbsp;result[x]&nbsp;+&nbsp;'&gt;'&nbsp;+&nbsp;result[x]&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+'&lt;\/a&gt;');\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(content_list);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error:function(){\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(\"\u5931\u8d25\");\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;checkstatus();\n&nbsp;&nbsp;&nbsp;&nbsp;get_list();\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/script&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/pre>\n<p><strong>\u7136\u540e\u662f\u540e\u53f0\u63a5\u6536<\/strong><\/p>\n<p>test.py<\/p>\n<pre>#!\/usr\/bin\/env&nbsp;python\n#&nbsp;-*-&nbsp;coding:utf-8&nbsp;-*-\nfrom&nbsp;flask&nbsp;import&nbsp;Flask,render_template,&nbsp;request,&nbsp;send_from_directory,jsonify,&nbsp;redirect\nimport&nbsp;os\n#&nbsp;import&nbsp;sys\n#&nbsp;reload(sys)\n#&nbsp;sys.setdefaultencoding('utf-8')\napp&nbsp;=&nbsp;Flask(__name__)\n#&nbsp;ALLOWED_EXTENSTIONS&nbsp;=&nbsp;set(['png',&nbsp;'jpg',&nbsp;'jpeg',&nbsp;'gif'])\napp.config['UPLOAD_FOLDER']&nbsp;=&nbsp;os.getcwd()\ndownload_floder&nbsp;=&nbsp;app.config['UPLOAD_FOLDER']&nbsp;+&nbsp;'\/upload'\ndef&nbsp;allow_file(filename):\n&nbsp;&nbsp;&nbsp;&nbsp;allow_list&nbsp;=&nbsp;['png',&nbsp;'PNG',&nbsp;'jpg',&nbsp;'doc',&nbsp;'docx',&nbsp;'txt',&nbsp;'pdf',&nbsp;'PDF',&nbsp;'xls',&nbsp;'rar',&nbsp;'exe',&nbsp;'md',&nbsp;'zip']&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;=&nbsp;filename.split('.')[1]\n&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;a&nbsp;in&nbsp;allow_list:\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;True\n&nbsp;&nbsp;&nbsp;&nbsp;else:\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;False\n@app.route('\/main')\ndef&nbsp;home():\n&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;render_template('index.html')\n@app.route('\/getlist')\ndef&nbsp;getlist():\n&nbsp;&nbsp;&nbsp;&nbsp;file_url_list&nbsp;=&nbsp;[]\n&nbsp;&nbsp;&nbsp;&nbsp;file_floder&nbsp;=&nbsp;app.config['UPLOAD_FOLDER']&nbsp;+&nbsp;'\/upload'\n&nbsp;&nbsp;&nbsp;&nbsp;file_list&nbsp;=&nbsp;os.listdir(file_floder)\n&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;filename&nbsp;in&nbsp;file_list:\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file_url&nbsp;=&nbsp;url_for('download',filename=filename)\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file_url_list.append(file_url)\n&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;print&nbsp;file_list\n&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;jsonify(file_list)\n@app.route('\/download\/&lt;filename&gt;')\ndef&nbsp;download(filename):\n&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;send_from_directory(download_floder,filename,&nbsp;as_attachment=True)\n@app.route('\/upload',&nbsp;methods=['POST',&nbsp;'GET'])\ndef&nbsp;upload():\n&nbsp;&nbsp;&nbsp;&nbsp;file&nbsp;=&nbsp;request.files['file']\n&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;not&nbsp;file:\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;render_template('index.html',&nbsp;status='null')\n&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;print&nbsp;type(file)\n&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;allow_file(file.filename):\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file.save(os.path.join(app.config['UPLOAD_FOLDER']+'\/upload\/',&nbsp;file.filename))\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;render_template('index.html',&nbsp;status='OK')\n&nbsp;&nbsp;&nbsp;&nbsp;else:\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;'NO'\nif&nbsp;__name__&nbsp;==&nbsp;'__main__':\n&nbsp;&nbsp;&nbsp;&nbsp;app.run(debug=True,&nbsp;host='0.0.0.0')<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u672c\u6587\u7ae0\u4ee3\u7801\u4e0a\u4f20\u5728\u7801\u4e91\u4e0a \u4ee3\u7801\u5730\u5740 git@gitee.com:DanYuJie\/upanddown.git \u8fd9 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":169243,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[182397],"tags":[],"class_list":["post-169242","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-python"],"_links":{"self":[{"href":"https:\/\/idc.net\/help\/wp-json\/wp\/v2\/posts\/169242","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/idc.net\/help\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/idc.net\/help\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/idc.net\/help\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/idc.net\/help\/wp-json\/wp\/v2\/comments?post=169242"}],"version-history":[{"count":0,"href":"https:\/\/idc.net\/help\/wp-json\/wp\/v2\/posts\/169242\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/idc.net\/help\/wp-json\/wp\/v2\/media\/169243"}],"wp:attachment":[{"href":"https:\/\/idc.net\/help\/wp-json\/wp\/v2\/media?parent=169242"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/idc.net\/help\/wp-json\/wp\/v2\/categories?post=169242"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/idc.net\/help\/wp-json\/wp\/v2\/tags?post=169242"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}