【问题标题】:How to open a .txt file in Django?如何在 Django 中打开 .txt 文件?
【发布时间】:2014-11-12 10:07:05
【问题描述】:

我有一个 Django 应用程序,当我单击链接时,我可以下载一个 .txt 文件。现在,我需要打开该文件(在“r”模式下),而不是下载该文件。我正在尝试做类似于邮件附件的事情,即当我们单击附件时,它会打开而不是下载。我该怎么做 ?以下代码是下载.txt文件:

def fetch_logfile(request,logfile):
    try:
        folder,log,_ = logfile.split("/")
        pathRelative = r"/LogFile/"+log
        folder,log,_ = logfile.split("/")
        pathRelative = r"/LogFile/"+log
        path = pathRelative[1::]
        os.startfile(pathRelative,open)
        file_path =os.getcwd()+ '/' +pathRelative
        file_wrapper = FileWrapper(file(file_path,'rb'))
        file_mimetype = mimetypes.guess_type(file_path)
        response = HttpResponse(file_wrapper, content_type=file_mimetype )
        response['X-Sendfile'] = file_path
        response['Content-Length'] = os.stat(file_path).st_size
        nameOnly = log.split('/')
        response['Content-Disposition'] = 'attachment; filename=%s' % nameOnly[len(nameOnly)-1]
        return response
    except:
       ## do something else

我在 Python IDLE 中尝试过的以下代码有效,但是当我在 Django 中尝试相同时,它就不起作用了。我也不确定这是否是正确的方法。请就此提出建议。

def fetch_Logfile(request,logfile):   
        import os,sys
        path = "C:\\Users\\welcome\\Desktop\\mysite\\LogFile\\"+"756849.txt"
        os.startfile(path,open)
        ## do something with logfile and request


 def fetch_Logfile(request,logfile):
        path = "C:\\Users\\welcome\\Desktop\\mysite\\LogFile\\"+"756849.txt"
        import webbrowser
        webbrowser.open(path)
        ## do something with logfile and request


    def fetch_Logfile(request,logfile):
        import win32api,os,subprocess
        path = "C:\\Users\\welcome\\Desktop\\mysite\\LogFile\\"+"756849.txt"
        filename_short = win32api.GetShortPathName(path)
        subprocess.Popen('start ' + filename_short, shell=True )
        subprocess.Popen('start ' + path, shell=True )
        ## do something with logfile and request

【问题讨论】:

    标签: python django


    【解决方案1】:
    my_file =  open(file_path, 'r') 
    response = HttpResponse(my_file.read(), mimetype='text/plain')
    response['Content-Disposition'] = 'inline;filename=some_file.txt'
    return response
    

    这里是MIME Types – Complete List 您可以通过引用 mime 类型列表,根据文件扩展名提供 mimetype = ' / '

    【讨论】:

    • 如何在单独的窗口中打开文件?
    • 这应该在新标签中打开文件,而不是下载到浏览器。
    • 它在同一个选项卡中打开。我需要这个在新标签页中打开。
    • 您是否在href 标签中添加了类似target="_blank" 的内容?但请注意:您不能强制每个浏览器在新标签(或窗口)中打开某个内容。
    • 您可能需要调用 javascript 窗口函数来实现这一点。这是一个例子stackoverflow.com/questions/21524316/…
    猜你喜欢
    • 2017-05-13
    • 1970-01-01
    • 2015-06-29
    • 1970-01-01
    • 1970-01-01
    • 2019-07-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-11
    相关资源
    最近更新 更多