Python 如何在Django中打开用户上载的文件
因此,我试图打开并操作用户上传的文件,这些文件存储在我的Django应用程序的Python 如何在Django中打开用户上载的文件,python,django,file-upload,Python,Django,File Upload,因此,我试图打开并操作用户上传的文件,这些文件存储在我的Django应用程序的MEDIA\u ROOT目录中 到目前为止,我只能打开项目目录中的文件。我尝试访问Mymedia目录下MyData\u files目录中的文件,如下所示: 尝试#1 尝试#2 我的第二次尝试利用了Django的文件存储API,但它们都不允许我访问项目目录中文件之外的任何位置的文件 给出的错误是: file b'PVP3.CSV' does not exist 追溯到: Environment: Request M
MEDIA\u ROOT
目录中
到目前为止,我只能打开项目目录中的文件。我尝试访问Mymedia
目录下MyData\u files
目录中的文件,如下所示:
尝试#1
尝试#2
我的第二次尝试利用了Django的文件存储API
,但它们都不允许我访问项目目录中文件之外的任何位置的文件
给出的错误是:
file b'PVP3.CSV' does not exist
追溯到:
Environment:
Request Method: POST
Request URL: http://127.0.0.1:8000/graphite/file_upload/
Django Version: 1.7.1
Python Version: 3.4.2
Installed Applications:
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'graphite',
'debug_toolbar')
Installed Middleware:
('django.middleware.cache.UpdateCacheMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'debug_toolbar.middleware.DebugToolbarMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.cache.FetchFromCacheMiddleware')
Traceback:
File "C:\Python34\lib\site-packages\django-1.7.1-py3.4.egg\django\core\handlers\base.py" in get_response
111. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Python34\lib\site-packages\django-1.7.1-py3.4.egg\django\contrib\auth\decorators.py" in _wrapped_view
22. return view_func(request, *args, **kwargs)
File "C:\Users\vut46744\Desktop\graphite_project\graphite\views.py" in upload_file
112. data_df = html_graph(request)
File "C:\Users\vut46744\Desktop\graphite_project\graphite\views.py" in html_graph
310. data_df = pd.read_csv(new_file, skiprows=header_row).drop(0, axis=0).astype(float)
File "C:\Python34\lib\site-packages\pandas\io\parsers.py" in parser_f
465. return _read(filepath_or_buffer, kwds)
File "C:\Python34\lib\site-packages\pandas\io\parsers.py" in _read
241. parser = TextFileReader(filepath_or_buffer, **kwds)
File "C:\Python34\lib\site-packages\pandas\io\parsers.py" in __init__
557. self._make_engine(self.engine)
File "C:\Python34\lib\site-packages\pandas\io\parsers.py" in _make_engine
694. self._engine = CParserWrapper(self.f, **self.options)
File "C:\Python34\lib\site-packages\pandas\io\parsers.py" in __init__
1056. self._reader = _parser.TextReader(src, **kwds)
Exception Type: OSError at /graphite/file_upload/
Exception Value: File b'PVP3.CSV' does not exist
是否有其他方法访问这些文件,或者我的代码在逻辑上有问题?您还没有说在尝试这两种方法时出现了什么问题。啊,我本想添加错误/回溯,但忘记了。请参阅编辑。您是否检查了文件是否确实存在?还可以尝试打印您试图打开文件的位置的绝对路径,看看它是否正常。顺便说一下,你不应该在阻止web请求的过程中做这些事情,但我不知道你是否这样做。@BjornTipling文件确实存在,但问题可能在于,我向用户展示了一个从文件中的数据生成的图形,并且在图形视图中,它试图在文件保存到
媒体
目录之前引用该文件?您尝试过使用pdb吗?你可以核实一下。
file b'PVP3.CSV' does not exist
Environment:
Request Method: POST
Request URL: http://127.0.0.1:8000/graphite/file_upload/
Django Version: 1.7.1
Python Version: 3.4.2
Installed Applications:
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'graphite',
'debug_toolbar')
Installed Middleware:
('django.middleware.cache.UpdateCacheMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'debug_toolbar.middleware.DebugToolbarMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.cache.FetchFromCacheMiddleware')
Traceback:
File "C:\Python34\lib\site-packages\django-1.7.1-py3.4.egg\django\core\handlers\base.py" in get_response
111. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Python34\lib\site-packages\django-1.7.1-py3.4.egg\django\contrib\auth\decorators.py" in _wrapped_view
22. return view_func(request, *args, **kwargs)
File "C:\Users\vut46744\Desktop\graphite_project\graphite\views.py" in upload_file
112. data_df = html_graph(request)
File "C:\Users\vut46744\Desktop\graphite_project\graphite\views.py" in html_graph
310. data_df = pd.read_csv(new_file, skiprows=header_row).drop(0, axis=0).astype(float)
File "C:\Python34\lib\site-packages\pandas\io\parsers.py" in parser_f
465. return _read(filepath_or_buffer, kwds)
File "C:\Python34\lib\site-packages\pandas\io\parsers.py" in _read
241. parser = TextFileReader(filepath_or_buffer, **kwds)
File "C:\Python34\lib\site-packages\pandas\io\parsers.py" in __init__
557. self._make_engine(self.engine)
File "C:\Python34\lib\site-packages\pandas\io\parsers.py" in _make_engine
694. self._engine = CParserWrapper(self.f, **self.options)
File "C:\Python34\lib\site-packages\pandas\io\parsers.py" in __init__
1056. self._reader = _parser.TextReader(src, **kwds)
Exception Type: OSError at /graphite/file_upload/
Exception Value: File b'PVP3.CSV' does not exist