如何在Django中打开.txt文件?

时间:2014-11-12 10:07:05

标签: python django

我有一个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

1 个答案:

答案 0 :(得分:4)

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 ='/'