我正在开发一个项目,其中有各种应用程序,例如协议(protocol)、预测等。
要执行一些计算“协议(protocol)”和“预测”应用程序需要用户以文件上传的形式输入。
我已经实现了以下模式,该模式将文件成功上传到基本项目目录中的“media”目录中。
我想以这种方式实现文件上传,以便它可以上传各个应用程序目录而不是公共(public)媒体目录的文件。
我的代码是这样的:
View .py
def simple_upload(request):
if request.method == 'POST' and request.FILES['myfile']:
myfile = request.FILES['myfile']
fs = FileSystemStorage()
filename = fs.save(myfile.name, myfile)
uploaded_file_url = fs.url(filename)
print uploaded_file_url
return render(request, 'protocol/submit_job.html', {})
return render(request, 'protocol/main_protocol.html')
url.py
url(r'^protocol/$', views.simple_upload, name='simple_upload'),
html
<form method="post" enctype="multipart/form-data">
<div class="heading">
<h1> Machine Learning Modeling.. </h1>
<h2> Upload CSV files .. </h2>
</div>
{% csrf_token %}
<input class="input" type="file" name="myfile">
<button class="button" type="submit"> Upload file and submit job </button>
</form>
{% if uploaded_file_url %}
<p class="text" >File uploaded successfully. </p>
{% endif %}
这个模式对我有用,并将所有文件上传到媒体目录中。 我应该进行哪些更改才能以应用程序特定的方式上传文件。
例如:
prediction/Input/uploaded_file_1.csv
protocol/Input/uploaded_file_2.csv
我不想将任何文件保存或上传到模型或数据库中。 Appl 将在下一次用户输入之前删除上传的文件。
最佳答案
FileSystemStorage 类具有 location
参数,默认设置为 MEDIA_ROOT
,但您可以将其更改为任何其他目录。
首先,更改类的默认位置:
fs = FileSystemStorage(location='prediction/Input/')
然后您可以按照与现在相同的方式保存文件。不要忘记写入权限。
以下是该类的文档: https://docs.djangoproject.com/en/2.0/ref/files/storage/#the-filesystemstorage-class
关于python - 项目中不同应用程序的 Django 文件上传?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48619044/