สอบถามเรื่องการ zip ไฟล์
Moderator: mindphp
- fonfonn
- PHP VIP Members
- โพสต์: 4983
- ลงทะเบียนเมื่อ: 11/07/2022 9:28 am
สอบถามเรื่องการ zip ไฟล์
สอบถามค่ะ คือต้องการดาวน์โหลดไฟล์ โดยการทำงานเราจะมีการแปลงไฟล์ PDF เป็นภาพ โดยถ้าเป็น PDF หลายหน้า ไฟล์ภาพจะได้หลายไฟล์
เลยอยากสอบถามโค้ดวิธีการ zip ไฟล์ภาพทั้งหมดที่ได้เพื่อให้ได้ไฟล์ zip ก่อนที่ผู้ใช้จะทำการดาวน์โหลด
เลยอยากสอบถามโค้ดวิธีการ zip ไฟล์ภาพทั้งหมดที่ได้เพื่อให้ได้ไฟล์ zip ก่อนที่ผู้ใช้จะทำการดาวน์โหลด
you're the only one treasure
- fonfonn
- PHP VIP Members
- โพสต์: 4983
- ลงทะเบียนเมื่อ: 11/07/2022 9:28 am
- fonfonn
- PHP VIP Members
- โพสต์: 4983
- ลงทะเบียนเมื่อ: 11/07/2022 9:28 am
Re: สอบถามเรื่องการ zip ไฟล์
สอบถามเรื่องการ zip ไฟล์ เนื่องจากมีการ แปลงไฟล์ PDF เป็นไฟล์ภาพ โดยถ้าเป็น PDF หลายหน้า จะได้ไฟล์ภาพหลายไฟล์ตามจำนวนหน้าของ PDF นั้นๆ จึงอยากทราบวิธีการ zip ไฟล์ เพื่อจะนำไฟล์ที่ zip ได้นั้นส่งไปเพื่อให้ผู้ใช้งานทำการดาวน์โหลด
you're the only one treasure
- MBMoo
- PHP VIP Members
- โพสต์: 25953
- ลงทะเบียนเมื่อ: 04/06/2020 10:05 am
Re: สอบถามเรื่องการ zip ไฟล์
การทำงานที่ว่าแปลงไฟล์ PDF เป็นภาพทำที่ไหนคะ js หรอคะ
- fonfonn
- PHP VIP Members
- โพสต์: 4983
- ลงทะเบียนเมื่อ: 11/07/2022 9:28 am
Re: สอบถามเรื่องการ zip ไฟล์
เป็นการแปลงไฟล์ PDF เป็นภาพในส่วนของ python ค่ะ
you're the only one treasure
- MBMoo
- PHP VIP Members
- โพสต์: 25953
- ลงทะเบียนเมื่อ: 04/06/2020 10:05 am
Re: สอบถามเรื่องการ zip ไฟล์
แนะนำให้ zip มาตั้งแต่ python เลยค่ะ และค่อยส่ง base64 ของไฟล์ zip มาที่ js ค่ะ
การเขียน Code ให้ zip ไฟล์ด้วยภาษา Python
https://www.mindphp.com/developer/tips- ... ython.html
หรือค้นหาเพิ่มเติมได้จาก site:mindphp.com zip ไฟล์
การเขียน Code ให้ zip ไฟล์ด้วยภาษา Python
https://www.mindphp.com/developer/tips- ... ython.html
หรือค้นหาเพิ่มเติมได้จาก site:mindphp.com zip ไฟล์
- fonfonn
- PHP VIP Members
- โพสต์: 4983
- ลงทะเบียนเมื่อ: 11/07/2022 9:28 am
Re: สอบถามเรื่องการ zip ไฟล์
จากที่ทำลองทำตามความเข้าใจนะคะ ใช้โค้ดนี้ในการ zip บางโฟร์เดอร์
จะสามารถ zip โฟร์เดอร์ที่มีการเก็บภาพที่แปลงจริง แต่ไม่มีไฟล์ด้านใน ควรปรับหรือใช้ตัวแปรไหนแทนในมา zip
เพิ่มเติมคือในส่วนโค้ดของการแปลงไฟล์ PDF มาเป็นภาพ
โค้ด: เลือกทั้งหมด
myzip = zipfile.ZipFile('PDFtoPIC.zip','w')
myzip.write(directory)
myzip.close()
เพิ่มเติมคือในส่วนโค้ดของการแปลงไฟล์ PDF มาเป็นภาพ
โค้ด: เลือกทั้งหมด
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 = name_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)
you're the only one treasure
- MBMoo
- PHP VIP Members
- โพสต์: 25953
- ลงทะเบียนเมื่อ: 04/06/2020 10:05 am
Re: สอบถามเรื่องการ zip ไฟล์
ตามเดิมสามารถใช้งานได้ปกตินะคะ
ไฟล์ทั้งหมดที่ต้องการ zip
โฟล์เดอร์ที่แตก zip มา และไฟล์ zip ที่ได้ออกมา
ไฟล์ทั้งหมดในโฟล์เดอร์ที่แตก zip มา
โค้ด: เลือกทั้งหมด
import os
import zipfile as z
for root, dirs, files in os.walk(r'/home/com015/PycharmProjects/pythonProject3/venv/image'):
zipf = z.ZipFile('Python3.zip', 'w')
for file in files:
zipf.write(os.path.join(root, file) , r'/imagezip/'+file) # os.path.join(root, file) เข้าไปเอาข้อมูลที่จะ zip , r'/imagezip/'+file โฟล์เดอร์ที่จะเก็บรูปภาพใน zip
zipf.close()
- fonfonn
- PHP VIP Members
- โพสต์: 4983
- ลงทะเบียนเมื่อ: 11/07/2022 9:28 am
Re: สอบถามเรื่องการ zip ไฟล์
จากที่ทดลองใช้งาน สามารถทำได้แล้วค่ะ สามารถ zip ทั้งตัวโฟร์เดอร์และไฟล์ ด้านในได้แล้วค่ะ
ผลลัพธ์
ไฟล์ zip แตกไฟล์
โค้ด: เลือกทั้งหมด
for root, dirs, files in os.walk(directory):
zipf = z.ZipFile('PDFtoPIC.zip', 'w')
for file in files:
zipf.write(os.path.join(root, file) , r'/PDFtoPIC/'+file) # os.path.join(root, file) เข้าไปเอาข้อมูลที่จะ zip , r'/imagezip/'+file โฟล์เดอร์ที่จะเก็บรูปภาพใน zip
zipf.close()
ไฟล์ zip แตกไฟล์
you're the only one treasure
- fonfonn
- PHP VIP Members
- โพสต์: 4983
- ลงทะเบียนเมื่อ: 11/07/2022 9:28 am
Re: สอบถามเรื่องการ zip ไฟล์
สอบถามเพิ่มเติมค่ะ ถ้าเราต้องการลบไฟล์หลังถูก zip ต้องทำยังไงหรอคะ คือตอนนนี้ การทำงานที่ได้ คือเมื่อทำการ zip ไฟล์แล้วแปลงเป็น base64 แล้ว โดยที่ปิดการทำงานส่วนการลบไฟล์ไว้ สามารถ ส่งค่า base64 ของไฟล์ zip และสามารถดาวน์โหลดไฟล์ได้ปกติ แต่พอเปิดการทำงานในส่วนของการ ลบไฟล์ จะไม่สามารถทำการดาวน์โหลดไฟล์ได้
เออเร่อในส่วนของ console
เออเร่อในส่วนของ console
โค้ดที่ใช้from origin 'null' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
โค้ด: เลือกทั้งหมด
@app.post('/api_pdftopic')
async def read_pdf(request: PDFtoPic, requests: Request):
username = request.username
type_manage = 'แปลง PDF เป็นภาพ'
name_pdf = request.name_pdf
type_file_pdf = request.type_file_pdf
date = dateday
ip = requests.client.host
connection = p2.connect( host = db_host, database = db_name, user = db_user, password = db_pass, port = db_port )
cur = connection.cursor()
sql = "insert into datauser(username,type_manage,name_pdf,type_file_pdf,date,ip) values ('%s','%s','%s','%s','%s','%s')" %(username,type_manage,name_pdf,type_file_pdf,date,ip)
cur.execute(sql)
connection.commit()
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 = name_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()),})
#ส่วนของการ zip ไฟล์
for root, dirs, files in os.walk(directory):
zipf = z.ZipFile('PDFtoPIC.zip', 'w')
for file in files:
zipf.write(os.path.join(root, file) , r'/PDFtoPIC/'+file) # os.path.join(root, file) เข้าไปเอาข้อมูลที่จะ zip , r'/imagezip/'+file โฟล์เดอร์ที่จะเก็บรูปภาพใน zip
zipf.close()
#แปลงไฟล์zipเป็น base64
with open(PARTHZIP+zip, "rb") as zip_file:
encoded_string = base64.b64encode(zip_file.read())
#print(encoded_string)
os.unlink(jpeg_report_path)
os.unlink(pdf_report_path)
os.rmdir(path)
return encoded_string
you're the only one treasure
ผู้ใช้งานขณะนี้
สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 71