使用werkzeug在文件系统上保存文件

问题描述:

我正尝试将上传的文件保存在我的系统上。在特定的路径,但我得到这个错误在Windows中。有人能告诉我我在哪里做错了吗?使用werkzeug在文件系统上保存文件

操作系统:Windows 8.1 Python版本:2.7

这里是我的代码:

# -*- coding: utf-8 -*- 

from werkzeug.serving import run_simple 
from werkzeug.wrappers import BaseRequest, BaseResponse 
import os 

def view_file(req): 
    if not 'file' in req.files: 
     return BaseResponse('no file uploaded') 
    f = req.files['file'] 

    s = "C:\Users\admin\Desktop\test" 
    f.save(s, f.filename) 
    return BaseResponse('File Saved!') 


def upload_file(req): 
    return BaseResponse(''' 
    <h1>Upload File</h1> 
    <form action="" method="post" enctype="multipart/form-data"> 
     <input type="file" name="file"> 
     <input type="submit" value="Upload"> 
    </form> 
    ''', mimetype='text/html') 


def application(environ, start_response): 
    req = BaseRequest(environ) 
    if req.method == 'POST': 
     resp = view_file(req) 
    else: 
     resp = upload_file(req) 
    return resp(environ, start_response) 


if __name__ == '__main__': 
    run_simple('localhost', 5000, application, use_debugger=True) 

这里是回溯:

Traceback (most recent call last): 
    File "C:\Users\admin\Desktop\test.py", line 30, in application 
    resp = view_file(req) 
    File "C:\Users\admin\Desktop\test.py", line 13, in view_file 
    f.save(s, f.filename) 
    File "C:\Python27\lib\site-packages\werkzeug\datastructures.py", line 2703, in 
save 
    dst = open(dst, 'wb') 
IOError: [Errno 22] invalid mode ('wb') or filename: 'C:\\Users\x07dmin\\Desktop 
\test' 
+0

你需要逃避'''\'''在你的文件的路径。 –

+0

更改s =“C:\\ Users \\ admin \\ Desktop \\ test”后,现在变为IOError:[Errno 13]权限被拒绝:'C:\\ Users \\ admin \\ Desktop \\ test' –

它看起来像\a被解释如a control character。如果你调用.save()

s = "C:\\Users\\admin\\Desktop\\test" 

还必须关闭文件:

你应该写这样的路径http://werkzeug.pocoo.org/docs/0.11/datastructures/#werkzeug.datastructures.FileStorage.save

你也需要提供一个缓冲区大小为.save()

所以尝试:

f.save(s, buffer_size=16384) 
f.close() 
+0

now获取IOError:[Errno 13]权限被拒绝:'C:\\ Users \\ admin \\ Desktop \\ test' –

+0

确保运行该脚本的用户具有与admin目录权限相同的权限。 – bernie

+0

是的,我正在管理脚本作为管理员..和文件夹有所有访问权限。 –