smi*_*omb 2 django ajax file-upload
正如标题所说,我想知道如何从 Django 存储的临时文件中访问数据,当文件上传时,在视图中。
我想读取上传的数据值,以便我可以制作进度条。我的方法是执行一个 jquerygetJSON请求:
function update_progress_info() {
$progress.show();
$.getJSON(progress_url, function(data, status){
if (data) {
var progress = parseInt(data.uploaded) / parseInt(data.length);
var width = $progress.find('.progress-container').width()
var progress_width = width * progress;
$progress.find('.progress-bar').width(progress_width);
$progress.find('.progress-info').text('uploading ' + parseInt(progress*100) + '%');
}
window.setTimeout(update_progress_info, freq);
});
};
Run Code Online (Sandbox Code Playgroud)
progress_url我处理上传的文件数据的视图在哪里:
# views.py (I don't know what to do here):
def upload_progress(request):
for line in UploadedFile.temporary_file_path
response = (line)
return response
Run Code Online (Sandbox Code Playgroud)
Django 使用 UploadHandler 处理上传的文件,settings.py此名称FILE_UPLOAD_HANDLERS默认为该元组:
FILE_UPLOAD_HANDLERS =
("django.core.files.uploadhandler.MemoryFileUploadHandler",
"django.core.files.uploadhandler.TemporaryFileUploadHandler",)
Run Code Online (Sandbox Code Playgroud)
文件上传的行为是,如果文件小于 2.5 毫克,那么它将保留在内存中,因此,它们不会作为临时文件写入磁盘。
如果该文件的权重更大,它会被写入在块中FILE_UPLOAD_TEMP_DIR的settings.py。这是您必须查询才能知道已上传多少字节的文件。
您可以通过访问上传/上传文件request变量views是这样的:file = requests.FILES['file']。在那里,file变量的类型UploadedFile将包含一个方法temporary_file_path,该方法带有正在上传的磁盘中的文件地址。(注意:只有大于 2.5 毫克的文件才会有这种方法)所以你可能会得到正在上传的文件的大小。
另一种方法是创建您自己的UploadHandler类似 aProgressBarUploadHandler并将其添加到您的文件上传处理程序。这是文档推荐的方式。这里有一些片段和教程。
如果您需要更多信息,该文档的文档非常详细。
我希望你觉得这有帮助。祝你好运。
| 归档时间: |
|
| 查看次数: |
4446 次 |
| 最近记录: |