หน้า 1 จากทั้งหมด 2

สอบถาม เกี่ยวกับ HTTP Header หน่อยครับ

โพสต์แล้ว: 02/07/2019 10:03 am
โดย jirawoot
ตอนนี้ผมจะทำ wed service แปลง html เป็นไฟล์ PDF
แล้วผมอยากให้ไฟล์ PDF มาโชว์บน web browser โดยส่งผ่าน HTTPHeader แนะนำแนวทางการศึกษาหน่วยครับ
Selection_002.png

Re: สอบถาม เกี่ยวกับ HTTP Header หน่อยครับ

โพสต์แล้ว: 02/07/2019 10:22 am
โดย thatsawan
ตัวอย่างภาษา php
https://www.php.net/manual/fr/function.header.php

ถ้า python ลองตามนี้


หรือ

โค้ด: เลือกทั้งหมด

import json
from flask import Flask, request, jsontify

app = Flask(__name__)

@app.route('/api/my_json', methods=['GET', 'POST])
def my_json():
    if request.method == 'POST':
        data = {
            'text': 'Hello, AdaBrain',
            'user': 'It\'s me Ada'
        }
                                    
        response = app.response_class(
            response=json.dumps(data),
        mimetype='application/json'
        )                                    
        return response
                                    
return '200'  
ตัวอย่างนี้จะ จะส่งออกมาเป็น json

โค้ด: เลือกทั้งหมด

response = app.response_class(
    		response=json.dumps(data),
		mimetype='application/json'
    	)	
ลองเปลี่ยนเป็น PDF ดูว่าจะได้มั้ย mimetype='application/pdf'

Re: สอบถาม เกี่ยวกับ HTTP Header หน่อยครับ

โพสต์แล้ว: 02/07/2019 10:23 am
โดย jirawoot
thatsawan เขียน:ตัวอย่างภาษา php
https://www.php.net/manual/fr/function.header.php

ถ้า python

โค้ด: เลือกทั้งหมด

import json
from flask import Flask, request, jsontify

app = Flask(__name__)

@app.route('/api/my_json', methods=['GET', 'POST])
def my_json():
    if request.method == 'POST':
        data = {
            'text': 'Hello, AdaBrain',
            'user': 'It\'s me Ada'
        }
                                    
        response = app.response_class(
            response=json.dumps(data),
        mimetype='application/json'
        )                                    
        return response
                                    
return '200'
ตัวอย่างนี้จะ จะส่งออกมาเป็น json

โค้ด: เลือกทั้งหมด

response = app.response_class(
    		response=json.dumps(data),
		mimetype='application/json'
    	)	
ลองเปลี่ยนเป็น PDF ดูว่าจะได้มั้ย mimetype='application/pdf'

หรือ ลองตามนี้
ขอบคุณครับผมจะศึกษาดู

Re: สอบถาม เกี่ยวกับ HTTP Header หน่อยครับ

โพสต์แล้ว: 02/07/2019 10:23 am
โดย mindphp
ตัวอย่าง flask กำหนด headers เอง

โค้ด: เลือกทั้งหมด

from flask import make_response

@app.route('/docs/<id>')
def get_pdf(id=None):
    if id is not None:
        binary_pdf = get_binary_pdf_data_from_database(id=id)
        response = make_response(binary_pdf)
        response.headers['Content-Type'] = 'application/pdf'
        response.headers['Content-Disposition'] = \
            'inline; filename=%s.pdf' % 'yourfilename'
        return response
ส่วนสำคัญคือตรงนี้

โค้ด: เลือกทั้งหมด

response.headers['Content-Type'] = 'application/pdf'

Re: สอบถาม เกี่ยวกับ HTTP Header หน่อยครับ

โพสต์แล้ว: 02/07/2019 10:26 am
โดย thatsawan
mindphp เขียน:ตัวอย่าง flask กำหนด headers เอง

โค้ด: เลือกทั้งหมด

from flask import make_response

@app.route('/docs/<id>')
def get_pdf(id=None):
    if id is not None:
        binary_pdf = get_binary_pdf_data_from_database(id=id)
        response = make_response(binary_pdf)
        response.headers['Content-Type'] = 'application/pdf'
        response.headers['Content-Disposition'] = \
            'inline; filename=%s.pdf' % 'yourfilename'
        return response
ส่วนสำคัญคือตรงนี้

โค้ด: เลือกทั้งหมด

response.headers['Content-Type'] = 'application/pdf'
อันนี้เหมือนใน VDO น่าจะมาถูกทาง 555

Re: สอบถาม เกี่ยวกับ HTTP Header หน่อยครับ

โพสต์แล้ว: 02/07/2019 11:10 am
โดย jirawoot
mindphp เขียน:ตัวอย่าง flask กำหนด headers เอง

โค้ด: เลือกทั้งหมด

from flask import make_response

@app.route('/docs/<id>')
def get_pdf(id=None):
    if id is not None:
        binary_pdf = get_binary_pdf_data_from_database(id=id)
        response = make_response(binary_pdf)
        response.headers['Content-Type'] = 'application/pdf'
        response.headers['Content-Disposition'] = \
            'inline; filename=%s.pdf' % 'yourfilename'
        return response
ส่วนสำคัญคือตรงนี้

โค้ด: เลือกทั้งหมด

response.headers['Content-Type'] = 'application/pdf'

โค้ด: เลือกทั้งหมด

binary_pdf = get_binary_pdf_data_from_database(id=id)
response = make_response(binary_pdf)
 
ในส่วนนี้ id ต้องมาจาก database หรอครับ

Re: สอบถาม เกี่ยวกับ HTTP Header หน่อยครับ

โพสต์แล้ว: 02/07/2019 11:13 am
โดย mindphp
get_binary_pdf_data_from_database() เป็นส่วนการทำงาน เพื่อแปลงไฟล์ pdf เป็น binary

Re: สอบถาม เกี่ยวกับ HTTP Header หน่อยครับ

โพสต์แล้ว: 02/07/2019 11:30 am
โดย jirawoot
mindphp เขียน:get_binary_pdf_data_from_database() เป็นส่วนการทำงาน เพื่อแปลงไฟล์ pdf เป็น binary
จะต้องแปลง pdf เป็น binary อีกทีใช่ไหมครับ

Re: สอบถาม เกี่ยวกับ HTTP Header หน่อยครับ

โพสต์แล้ว: 02/07/2019 11:34 am
โดย mindphp
ใช่ครับ

Re: สอบถาม เกี่ยวกับ HTTP Header หน่อยครับ

โพสต์แล้ว: 02/07/2019 12:17 pm
โดย jirawoot
mindphp เขียน:get_binary_pdf_data_from_database() เป็นส่วนการทำงาน เพื่อแปลงไฟล์ pdf เป็น binary

โค้ด: เลือกทั้งหมด

        with open("/home/com001/PycharmProjects/htmltoPdfImage2/pdf/test1.pdf", "rb") as pdf_file:
            encoded_string = base64.b64encode(pdf_file.read())
ผมลอง return ค่าออกมาดูจะได้แบบนี้ถูกไหมครับ
Selection_004.png