gpt4 book ai didi

ajax - 在 Django View 中从上传访问临时文件

转载 作者:行者123 更新时间:2023-12-02 17:44:52 24 4
gpt4 key购买 nike

正如标题所说,我想知道如何在上传文件时在 View 中访问 Django 存储的临时文件中的数据。

我想读取数据上传的值,这样我就可以制作一个进度条。我的方法是执行一个 jquery getJSON 请求:

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);
});
};

其中 progress_url 是我处理上传文件数据的 View :

# 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

最佳答案

Django 使用在 settings.py 中定义的 UploadHandler 处理上传的文件,此名称 FILE_UPLOAD_HANDLERS 默认为此元组:

FILE_UPLOAD_HANDLERS = 
("django.core.files.uploadhandler.MemoryFileUploadHandler",
"django.core.files.uploadhandler.TemporaryFileUploadHandler",)

文件上传的行为是,如果文件小于 2.5 mg,那么它将保留在内存中,因此,它们不会作为临时文件写入磁盘。

如果文件权重更大,它将被写入到 settings.py 中的 FILE_UPLOAD_TEMP_DIR 中。您必须查询该文件才能知道已上传了多少字节。

您可以通过 views 中的 request 变量访问已上传/正在上传的文件,如下所示:file = requests.FILES['file'] 。在那里,file 变量的类型为 UploadedFile,其中包含一个方法 temporary_file_path,其中包含要上传的文件在磁盘中的地址。 (注意: 只有大于 2.5 mg 的文件才会使用此方法)因此您可能会得到正在上传的文件的大小。

另一种方法是创建您自己的 UploadHandler,例如 ProgressBarUploadHandler,并将其添加到您的文件上传处理程序中。这是docs的方式推荐它。这里有一些 snippetstutorials因为这样做。

如果您需要更多信息,请联系 doc确实有据可查。

希望对您有所帮助。祝你好运。

关于ajax - 在 Django View 中从上传访问临时文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16308567/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com