我正在制作一个Django应用,其中一个人上传一个.mp3,然后服务器处理该.mp3文件,然后用户可以下载处理后的文件。
我不知道如何处理上传和下载。我尝试使用filetransfers,但似乎无法解决我的问题。
PS:我一点都不熟悉Http协议...
答案 0 :(得分:0)
要加载文件,请使用FileField类。
FileField class (upload_to = None, max_length = 100, ** options)
必须指定文件保存目录。
示例:
class MyModel(models.Model):
# file will be uploaded to MEDIA_ROOT/uploads
upload = models.FileField(upload_to='uploads/')
# or...
# file will be saved to MEDIA_ROOT/uploads/2015/01/30
upload = models.FileField(upload_to='uploads/%Y/%m/%d/')
您还必须使用文件地址配置“ settings.py”文件。
STATIC_URL = '/static/'
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(PROJECT_DIR, 'media')
存储也可以远程完成,即拥有另一台存储服务器,成为服务器并通过FTP建立连接或使用其他服务(例如AWS S3)。
如果使用FTP:
DEFAULT_FILE_STORAGE = 'storages.backends.ftp.FTPStorage'
USER = 'userftp'
PASSWORD = "passftp"
HOST = 'ftp.host.com or IP'
PORT = 21
FTP_STORAGE_LOCATION = "ftp://{user}:{passwd}@{host}:{port}/".format(user=USER, passwd=PASSWORD, host=HOST, port=PORT)
如果使用了S3
AWS_STORAGE_BUCKET_NAME = os.getenv('AWS_BUCKET_NAME')
AWS_ACCESS_KEY_ID = os.getenv('AWS_S3_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY_ID = os.getenv('AWS_S3_SECRET_KEY')
AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME
AWS_S3_OBJECT_PARAMETERS = { 'CacheControl': 'max-age=86400' }
AWS_LOCATION = 'static'
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'code/static'),]
STATIC_URL = 'https://%s/%s/' % (AWS_S3_CUSTOM_DOMAIN, AWS_LOCATION)
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
,然后在“ urls.py”文件中添加:
urlpatterns = [
url(r'^admin/', admin.site.urls),
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)