分析堆栈跟踪的这一部分:
File "C:Python27libsite-packagesdjangocorefilesstorage.py", line 261, in path raise SuspiciousFileOperation("Attempted access to '%s' denied." % name)
导致标准的Django
FileSystemStorage。它期望文件位于你的MEDIA_ROOT。你的文件可以在文件系统中的任何位置,因此会发生此问题。
你应该传递类似文件的对象,而不是
File模型的路径。最简单的方法是使用Django
File类,该类是类似python文件的对象的包装。有关更多详细信息。
更新:
好的,我建议从文档中选择一条路线:
from django.core.files import File as FileWrapperdef _handle_directory(self, directory_path, directory): for root, subFolders, files in os.walk(directory_path): for filename in files: self.cnt_files += 1 new_file = File( directory=directory, filename=filename, file=os.path.join(root, filename), uploader=self.uploader) with open(os.path.join(root, filename), 'r') as f: file_wrapper = FileWrapper(f) new_file = File( directory=directory, filename=filename, file=file_wrapper, uploader=self.uploader) new_file.save()
如果可行,则应将文件复制到
secure_storage可调用对象提供的位置。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)