สอบถามเรื่องการแก้ไขการใช้งานพาร์ทที่มีการเซฟไฟล์ในเครื่อง ในภาษา python

แนะนำ สอบถาม ภาษา C สำหรับผู้เริ่มต้น ภาษา Java ภาษา Python

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
fonfonn
PHP VIP Members
PHP VIP Members
โพสต์: 4983
ลงทะเบียนเมื่อ: 11/07/2022 9:28 am

สอบถามเรื่องการแก้ไขการใช้งานพาร์ทที่มีการเซฟไฟล์ในเครื่อง ในภาษา python

โพสต์ที่ยังไม่ได้อ่าน โดย fonfonn »

สอบถามค่ะ คือตอนนี้การทำงานเราจะมีการตั้งค่าให้ไฟล์มีการเซฟข้อมูลที่เรา Input เครื่อง เพื่อทำการเรียกใช้งานต่อ ซึ่งอยากแก้ไขให้ไม่ใช้พาร์ทที่เป็นการเซฟลงเครื่องโดยตรงได้ยังไงบ้างคะ คือตอนนี้ยังไม่ทราบว่าวิธีการหรือหลักการค่ะ ขอคำแนะนำหรือวิธีการเพื่อแก้ไขในเรื่องนี้ทีค่ะ

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

@app.post('/api_pdftopic')
async def read_pdf(request: Pdf_base64):
    dt = datetime.now()
    ts = str(datetime.timestamp(dt))
    directory = "pdf_to_image" + ts
    parent_dir = r"C:\Users\fonfo\pdf-toolkits"
    path = os.path.join(parent_dir, directory)
    os.mkdir(path)
    attach_fname = 'PDF_File.pdf'
    attach_fname_jpj = attach_fname.replace(".pdf", ".jpg")
    jpeg_report_path = os.path.join(path, attach_fname_jpj)
    fname_new = ' "' + jpeg_report_path + '"'
    pdf_report_path = os.path.join(path, attach_fname)
    with open(pdf_report_path, 'wb') as theFile:
         theFile.write(base64.b64decode(request.pdf_base64))

    process = subprocess.Popen(r'Magick convert ' + pdf_report_path + fname_new,stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    out, err = process.communicate()

    file_len = len([name for name in os.listdir(path) if
                    os.path.isfile(os.path.join(path, name))])
    
    image_base_64 = []
    for no in range(file_len -1):
        if file_len > 2:
            new = "-%s.jpg" % no
        else:
            new = ".jpg"
        name_jpg = attach_fname.replace(".pdf", new)
        jpeg_report_path = os.path.join(path, name_jpg)
        with open(jpeg_report_path, "rb") as image_file:
            image_base_64.append({'base64_Img': base64.b64encode(image_file.read()),})
        os.unlink(jpeg_report_path)
    os.unlink(pdf_report_path)
    os.rmdir(path)
    
    return image_base_64
จากตรงนี้ parent_dir = r"C:\Users\fonfo\pdf-toolkits" เป็นการสร้างโฟร์เดอร์ที่มีการเซฟลงเครื่อง เราสามารถแก้ไขไม่ให้เซฟลงเครื่องได้ยังไงบ้างคะ แต่การเรียกใช้งานยังทำได้แบบเดิม หรือถ้ามีข้อแนะนำหรือควรทำส่วไหนก่อน รบกวนอธิบายทีค่ะ
you're the only one treasure💎
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 47754
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: สอบถามเรื่องการแก้ไขการใช้งานพาร์ทที่มีการเซฟไฟล์ในเครื่อง ในภาษา python

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

ตั้งค่า สำหรับ config ที่เก็บไฟล์ชั่วคราว หรือ เก็บไว้ใน temp folder ของ OS ของเรา
ตัวอย่างกระทู้ทำไฟล์ config
viewtopic.php?p=157702
viewtopic.php?p=157783
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ภาพประจำตัวสมาชิก
fonfonn
PHP VIP Members
PHP VIP Members
โพสต์: 4983
ลงทะเบียนเมื่อ: 11/07/2022 9:28 am

Re: สอบถามเรื่องการแก้ไขการใช้งานพาร์ทที่มีการเซฟไฟล์ในเครื่อง ในภาษา python

โพสต์ที่ยังไม่ได้อ่าน โดย fonfonn »

ขอสรุปการทำงานการ ตั้งค่า สำหรับ config ก่อนนะคะ เนื่องจากไม่เคยใช้ เลยสอบถามเพิ่มเติมก่อนว่าเข้าใจถูกไหม คือ เราสร้างไฟล์ .conf มา และมีการเก็บข้อมูลในส่วนนี้ไว้ในตัวแปรที่ชื่อว่า data

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

[options]
    data = FONFONN
จากนั้นหน้าไฟล์ python เรามารถเรียกข้อมูลในหน้า .conf มาได้

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

import configparser

config = configparser.ConfigParser()
config.read('test.conf') #อ่านไฟล์
data_conf = config['options']['data'] #อ่านค่าออกมาใช้งาน
print (data_conf)
การทำงานก็จะประมาณนี้ใช่ไหมคะ
แล้วถ้าที่ตามความเข้าใจ คือเราจะต้องนำไฟล์ ที่เรา input เข้ามาเก็บใน config เพื่อนำไปเรียกใช้งาน แทน พาร์ทที่เป็นการเซฟลงเครื่อง เข้าใจการทำงานถูกต้องไหมคะ
you're the only one treasure💎
ภาพประจำตัวสมาชิก
wkid
PHP VIP Members
PHP VIP Members
โพสต์: 2158
ลงทะเบียนเมื่อ: 17/05/2022 10:37 am

Re: สอบถามเรื่องการแก้ไขการใช้งานพาร์ทที่มีการเซฟไฟล์ในเครื่อง ในภาษา python

โพสต์ที่ยังไม่ได้อ่าน โดย wkid »

fonfonn เขียน: 22/08/2022 11:49 am กระทู้ เพิ่มเติม viewtopic.php?t=84925
จะมีตั้งค่าตัวของ ดาต้าเบสกับ ในส่วนของ path ได้ครับ
ให้ผู้ใช้แก้ไขเองได้ตามสะดวกครับ
ทำไมสัตว์ที่น่ากลัวที่สุดถึงตัวเล็กๆที่เรียกว่า Bug ละนั่น );
ภาพประจำตัวสมาชิก
fonfonn
PHP VIP Members
PHP VIP Members
โพสต์: 4983
ลงทะเบียนเมื่อ: 11/07/2022 9:28 am

Re: สอบถามเรื่องการแก้ไขการใช้งานพาร์ทที่มีการเซฟไฟล์ในเครื่อง ในภาษา python

โพสต์ที่ยังไม่ได้อ่าน โดย fonfonn »

จากกระทูแนะนำ
หน้า admin.conf

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

[options]
host = 127.0.0.1
port = 5000
host_db = 127.0.0.1
ports = 5432
database = DBPDF_Toolkits
user = postgres
password = 123456
หน้า main.py

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

import configparser


config = configparser.ConfigParser()
config.read('admin.conf')

host = config['options']['host']
port = config['options']['port']
db_host = config['options']['host_db']
db_port = config['options']['ports']
db_name = config['options']['database']
db_user = config['options']['user']
db_pass = config['options']['password']
ตรงส่วนนี้คือจะเป็นการตั้งค่า Database ใช่ไหมคะ แล้วคือต้องมีหน้าสำหรับการ connect Database แยกอีกทีใช่ไหมคะ
you're the only one treasure💎
ภาพประจำตัวสมาชิก
fonfonn
PHP VIP Members
PHP VIP Members
โพสต์: 4983
ลงทะเบียนเมื่อ: 11/07/2022 9:28 am

Re: สอบถามเรื่องการแก้ไขการใช้งานพาร์ทที่มีการเซฟไฟล์ในเครื่อง ในภาษา python

โพสต์ที่ยังไม่ได้อ่าน โดย fonfonn »

จากที่สอบถามเพิ่มเติม เข้าใจการใช้งาน config เพิ่มมากขึ้นแล้วค่ะ
ส่วนของหน้า admin.conf

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

[options]
host = 127.0.0.1
port = 5000
host_db = 127.0.0.1
ports = 5432
database = DBPDF_Toolkits
user = postgres
password = 123456

PARTH = C:\Users\fonfo\pdf-toolkits
PARTHPDF = C:\Users\fonfo\pdf-toolkits\pythonPDF.pdf
PARTHJPG = C:\Users\fonfo\pdf-toolkits\picture.jpg
ส่วนของหน้า main.py

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

import configparser

config = configparser.ConfigParser()
config.read('admin.conf')

host = config['options']['host']
port = config['options']['port']
db_host = config['options']['host_db']
db_port = config['options']['ports']
db_name = config['options']['database']
db_user = config['options']['user']
db_pass = config['options']['password']
PARTH = config['options']['PARTH']
PARTHPDF = config['options']['PARTHPDF']
PARTHJPG = config['options']['PARTHJPG']
ส่วนของโค้ดที่เป็น parent_dir = r"C:\Users\fonfo\pdf-toolkits เปลี่ยนเป็น parent_dir = PARTH คือการเรียใช้งานค่าที่เซ็ตไว้ใน config

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

@app.post('/api_pdftopic')
async def read_pdf(request: Pdf_base64):
    dt = datetime.now()
    ts = str(datetime.timestamp(dt))
    directory = "pdf_to_image" + ts
    parent_dir = PARTH
    path = os.path.join(parent_dir, directory)
    os.mkdir(path)
    attach_fname = 'PDF_File.pdf'
    attach_fname_jpj = attach_fname.replace(".pdf", ".jpg")
    jpeg_report_path = os.path.join(path, attach_fname_jpj)
    fname_new = ' "' + jpeg_report_path + '"'
    pdf_report_path = os.path.join(path, attach_fname)
    with open(pdf_report_path, 'wb') as theFile:
         theFile.write(base64.b64decode(request.pdf_base64))

    process = subprocess.Popen(r'Magick convert ' + pdf_report_path + fname_new,stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    out, err = process.communicate()

    file_len = len([name for name in os.listdir(path) if
                    os.path.isfile(os.path.join(path, name))])
    
    image_base_64 = []
    for no in range(file_len -1):
        if file_len > 2:
            new = "-%s.jpg" % no
        else:
            new = ".jpg"
        name_jpg = attach_fname.replace(".pdf", new)
        jpeg_report_path = os.path.join(path, name_jpg)
        with open(jpeg_report_path, "rb") as image_file:
            image_base_64.append({'base64_Img': base64.b64encode(image_file.read()),})
        os.unlink(jpeg_report_path)
    os.unlink(pdf_report_path)
    os.rmdir(path)
    
    return image_base_64
ต้องมีหน้าสำหรับการ connect Database แยกไว้ ส่วน config จะเป็นการเซ็ตค่าที่ผู้ใช้งานสามารถแก้ไขได้
you're the only one treasure💎
ตอบกลับโพส
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 12