“文件在站点上不可用”错误,虽然它确实存在,Django

问题描述 投票:0回答:1

我正在编写一个网络,它获取

.csv
.xlsx
数据集,对其进行处理,然后使用
Django
将其返回给用户。我应该说它在本地主机上运行正常。但不在真实服务器中。

views.py 用于创建项目并接收文件:

from django.core.files.storage import FileSystemStorage


def create_prject(request):
    if request.method == 'POST':
        user = request.user
        name = request.POST.get('pname')
        data = request.FILES['data']
        frequency = request.POST.get('frequency')
        unit = request.POST.get('unit')

        fs = FileSystemStorage(location=f'Media/Projects/{user}')
        filename = fs.save(data.name, data)
        dataurl = f'/Media/Projects/{user}/{filename}'
        header = request.POST.get('header')

        if header is not None:
            Project.objects.create(ProUser=user, Name=name, Data=filename, DataURL=dataurl,
                                   Header=True, Frequency=str(frequency), Unit=unit)
        else:
            Project.objects.create(ProUser=user, Name=name, Data=filename, DataURL=dataurl,
                                   Header=False, Frequency=str(frequency), Unit=unit)

    return redirect('dashboard')

处理后我想将文件返回给用户(原始文件和处理后的文件必须可下载)。

views.py处理后:

def process(request):
    user = request.user
    if not user.is_authenticated:
        return redirect('login')
    else:
        if request.method == 'POST':

            # Some Processing Functions and creating the pandas.DataFrame

            excel_file = f'Despiked - {project.Name}.xlsx'
            dff.to_excel(excel_file, index=False)
            fs = FileSystemStorage(location=f'Media/Projects/Despiked/{user}')
            filename = fs.save(excel_file, open(excel_file, 'rb'))
            os.remove(excel_file)
            project.Processed_Data = filename
            project.Processed_DataURL = f'/Media/Projects/Despiked/{user}/{filename}'
            project.save()
            return redirect('dashboard')

下载按钮将显示在模板中。但是当我单击每个文件(原始文件或已处理文件)时,我收到“文件在站点上不可用”错误。虽然它确实存在于 CPanel 的文件管理器中。例如,CPanel 中的 URL 为

/Media/Projects/Despiked/farzad/Despiked - Test File.xlsx
,下载链接 href 相同。我错过了什么?
enter image description here
任何帮助将不胜感激。

python django file-system-storage
1个回答
0
投票

我猜测该文件在某种程度上存在格式错误。

右键单击该按钮并选择“在新选项卡中打开链接” - 如果服务器以这种方式配置,这可能会向您显示真正的错误消息。

过去,如果我没记错的话,如果 Chrome 无法渲染网页或文件,它只会为你下载一个奇怪的文件。现在它给出了这个相当模糊的“文件在站点上不可用”错误,而不是现在只下载格式错误的文件。

也许更好的消息是“此文件存在格式错误。看起来它想要成为 XML(CSV、PDF、XML 等)文件,但它有问题。”

© www.soinside.com 2019 - 2024. All rights reserved.