烧瓶中重定向的参数

时间:2021-07-20 05:25:44

标签: python variables flask redirect parameters

对不起,我不熟悉使用 Flask 进行路由和重定向。我做了 3 个函数 upload_file()encrypt()emel()upload_file() 是将文件从表单传递给函数以获得水印。 encrypt() 将文件从 upload_file() 传递给函数以进行加密和解密。 emel() 正在传递来自 encrypt() 的解密文件以向接收者发送电子邮件。

upload_file()

@app.route('/upload_file', methods=['POST'])
def upload_file():

    pdf_file = request.files['file']
    watermark = "watermark.pdf"
    merged_file = "merged.pdf"

    input_pdf = PyPDF2.PdfFileReader(pdf_file)

    watermark_file = open(watermark,'rb')
    watermark_pdf = PyPDF2.PdfFileReader(watermark_file)

    pdf_page = input_pdf.getPage(0)

    watermark_page = watermark_pdf.getPage(0)

    pdf_page.mergePage(watermark_page)

    output = PyPDF2.PdfFileWriter()

    output.addPage(pdf_page)

    merged_file = open(merged_file,'wb')
    output.write(merged_file)

    merged_file.close()
    watermark_file.close()
    pdf_file.close()

    return redirect(url_for("encrypt", file="merged.pdf"))

encrypt()

@app.route("/<file>")
def encrypt(file):

    print(file)
    key = Fernet.generate_key()

    file1 = open('key.key', 'wb')
    file1.write(key)
    file1.close()

    file2 = open('key.key', 'rb')
    key = file2.read()
    file2.close()

    # with open ('mykey.key', 'wb') as mykey:
    #     mykey.write(key)  

    # with open('mykey.key', 'rb') as mykey:
    #     key = mykey.read()

    # print(key)

    with open(file, 'rb') as original_file:
        original = original_file.read()

    f = Fernet(key)
    encrypted = f.encrypt(original)

    with open('test1.pdf', 'wb') as encrypted_file:
        encrypted_file.write(encrypted)

    f = Fernet(key)

    with open('test1.pdf', 'rb') as encrypted_file:
        encrypted = encrypted_file.read()

    decrypted = f.decrypt(encrypted)

    with open('test2.pdf', 'wb') as decrypted_file:
        decrypted_file.write(decrypted)

    return redirect(url_for("emel", decrypted_file='test2.pdf'))

encrypt() 中,例如当 i return "Success" 时,它会返回成功。但是当我 return redirect(url_for("emel", decrypted_file='test2.pdf')) 时,我收到错误 File "C:\Users\User\Desktop\abc\test.py", line 104, in encrypt with open(file, 'rb') as original_file: FileNotFoundError: [Errno 2] No such file or directory: 'favicon.ico'。我想我设法将文件从 upload_file() 传递到 encrypt()。但是当我将文件重定向到另一个函数时,我收到错误

emel()

@app.route("/<decrypted_file>")
def emel(decrypted_file):

    email_user = "gmail@gmail.com"
    email_send = "gmail2@gmail.com"
    subject = 'Python!'

    msg = MIMEMultipart()
    msg['From'] = email_user
    msg['To'] = email_send
    msg['Subject'] = subject

    body = 'Hi there, sending this email from Python!'
    msg.attach(MIMEText(body, 'plain'))

    filename = decrypted_file
    attachment = open(filename,'rb')

    part = MIMEBase('application', 'octet-stream')
    part.set_payload((attachment).read())
    encoders.encode_base64(part)
    part.add_header('Content-Disposition', "attachment; filename= "+filename)

    msg.attach(part)

    text = msg.as_string()

    server = smtplib.SMTP('smtp.gmail.com', 587)
    server.starttls()
    server.login(email_user, "password")

    server.sendmail(email_user, email_send, text)
    server.quit()

    return "Success send email"

我想将文件从 encrypt() 传递到 emel()。请帮我。帮助将不胜感激。谢谢..

0 个答案:

没有答案