如何在我的机器上为上传的文件生成URL?(部署在Apache2 Debian上)

2024-03-28 22:31:25 发布

您现在位置:Python中文网/ 问答频道 /正文

在一个Flask python函数中,我想获取一个保存的文件并找出它的URL,这样我就可以将它输入到googledocs查看器中。所以如果我救了你测试.pdf'可能会返回'mydomain.com/www/html/myapp/packets/test.pdf格式。你知道吗

但是我不知道怎么做。它在我开发的时候工作得很好,但是自从我部署它之后就坏了。这是我的apache2配置文件。你知道吗

<VirtualHost *:80>
        DocumentRoot /var/www/html/myapp
        ServerName mydomain.com
        WSGIScriptAlias / /var/www/html/myapp/myapp.wsgi

        <Directory /var/www>
            Order deny,allow
            Allow from all
        </Directory>

        ErrorLog /var/www/html/error.log
        LogLevel info
        CustomLog /var/www/html/access.log combined
</VirtualHost>

以及我的Python函数(使用AJAX上传文件):

@app.route('/uploadajax', methods=['POST', 'GET'])
def upload():
    file = request.files['file']

    if file and allowed_file(file.filename):
        pkt_filename = secure_filename(file.filename)
        file.save(os.path.join(app.config['UPLOAD_FOLDER'], pkt_filename))

    return jsonify({'filename':'/var/www/html/myapp/packets/' + pkt_filename})

问题是我不知道具体在哪里mydomain.com在系统上。在发展中,我可以mydomain.com/html/myapp/packets/test.pdf,它将在浏览器中打开,但在部署中不起作用。即使DocumentRoot是/var/www/html/myapp,输入mydomain.com/packets/test在地址栏中输入.pdf将返回404(即使它肯定存在于系统中)。你知道吗

另一件有趣的事是操作系统cwd()中,Python函数返回“/”,尽管我不确定这会产生什么后果。你知道吗

有什么帮助吗?你知道吗


Tags: 文件函数testcompdfvar部署html