ขอสอบถามเกี่ยวกับ การ send_file zip ครับ

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

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

benzas00123
PHP Super Member
PHP Super Member
Posts: 244
Joined: 06/01/2020 9:58 am

ขอสอบถามเกี่ยวกับ การ send_file zip ครับ

Post by benzas00123 »

C++ & java & Python-1.png
C++ & java & Python-1.png (41.33 KiB) Viewed 488 times
โดยตัว code ของผมจะเช็คว่าใน folder นั้นมีไฟล์ทั้งหมดกี่ตัว ถ้ามีไฟล์เดียวจะอัพโหลดไฟล์เดียวแต่ถ้ามีหลายไฟล์ จะzip ทั้งหมดก่อนค่อยอัพโหลด
ตัวที่เป็นไฟล์เดียว อัพโหลดแล้ว ลองโหลดเปิดได้ปรกติครับ แต่ที่เป็น file zip ไม่สามารถเปิดได้ครับ โดยผมลองไปเปิดตัว ไฟล์ zip ใน folder ที่ฟังก์ชั่นได้สร้างแล้วเปิดได้ปรกติ แต่พอ send_file ออกมาแล้วมันเปิดไม่ได้


แต่ตัว file zip ที่ฟังก์ชั่นสร้างขึ้นมาเปิดได้ปรกติ

code

Code: Select all

@app.route('/downloadFile', methods=['POST','GET'])
def downloadFile ():
    list = os.listdir(parth)
    numm =len(list)
    if numm == 1:
        for i in os.listdir ( parth ):
            return send_file(parth+i, as_attachment=True)
    else:


        zipf = z.ZipFile ( 'zip/Python.zip', 'w' )
        for root, dirs, files in os.walk ( parth ):
            for file in files:
                zipf.write ( os.path.join ( root, file ) )

            return send_file("zip/Python.zip" ,as_attachment=True)



    return
อันนี้หน้า html ที่ลอง download file ครับ

Code: Select all

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="../static/css/bootstrap.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
  <script src="../static/js/bootstrap.js"></script>
</head>

<body>
<div class="rowcol-sm-3 col-sm-offset-4">
<form id="upload-form" action="{{url_for('downloadFile')}}" method="POST" enctype="multipart/form-data">
  <div>
    <input type="submit" class="btn btn-primary btn-lg" value="download">
  </div>
</form>
</div>
</body>
User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 25527
Joined: 22/09/2008 6:18 pm
Contact:

Re: ขอสอบถามเกี่ยวกับ การ send_file zip ครับ

Post by mindphp »

อัพโหลด หรือ ดาวน์โหลด งง
ถ้าทำฟอร์ม อัพโหลด จะขึ้นอยู่กับ ผู้ใช้งาน ว่าจะเลือกอัพโหลด อะไรเข้ามา
ติดตาม 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
benzas00123
PHP Super Member
PHP Super Member
Posts: 244
Joined: 06/01/2020 9:58 am

Re: ขอสอบถามเกี่ยวกับ การ send_file zip ครับ

Post by benzas00123 »

mindphp wrote: 27/01/2020 3:05 pm อัพโหลด หรือ ดาวน์โหลด งง
ถ้าทำฟอร์ม อัพโหลด จะขึ้นอยู่กับ ผู้ใช้งาน ว่าจะเลือกอัพโหลด อะไรเข้ามา
ดาวน์โหลดครับ ปัญหาคือ พอดาวน์โหลดไฟล์ zip ลงมาแล้วมันเปิดไม่ได้ครับ
User avatar
jirawoot
PHP VIP Members
PHP VIP Members
Posts: 3130
Joined: 17/06/2019 10:30 am

Re: ขอสอบถามเกี่ยวกับ การ send_file zip ครับ

Post by jirawoot »

benzas00123 wrote: 25/01/2020 8:44 pm C++ &amp; java &amp; Python-1.png
โดยตัว code ของผมจะเช็คว่าใน folder นั้นมีไฟล์ทั้งหมดกี่ตัว ถ้ามีไฟล์เดียวจะอัพโหลดไฟล์เดียวแต่ถ้ามีหลายไฟล์ จะzip ทั้งหมดก่อนค่อยอัพโหลด
ตัวที่เป็นไฟล์เดียว อัพโหลดแล้ว ลองโหลดเปิดได้ปรกติครับ แต่ที่เป็น file zip ไม่สามารถเปิดได้ครับ โดยผมลองไปเปิดตัว ไฟล์ zip ใน folder ที่ฟังก์ชั่นได้สร้างแล้วเปิดได้ปรกติ แต่พอ send_file ออกมาแล้วมันเปิดไม่ได้


แต่ตัว file zip ที่ฟังก์ชั่นสร้างขึ้นมาเปิดได้ปรกติ

code

Code: Select all

@app.route('/downloadFile', methods=['POST','GET'])
def downloadFile ():
    list = os.listdir(parth)
    numm =len(list)
    if numm == 1:
        for i in os.listdir ( parth ):
            return send_file(parth+i, as_attachment=True)
    else:


        zipf = z.ZipFile ( 'zip/Python.zip', 'w' )
        for root, dirs, files in os.walk ( parth ):
            for file in files:
                zipf.write ( os.path.join ( root, file ) )

            return send_file("zip/Python.zip" ,as_attachment=True)



    return
อันนี้หน้า html ที่ลอง download file ครับ

Code: Select all

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="../static/css/bootstrap.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
  <script src="../static/js/bootstrap.js"></script>
</head>

<body>
<div class="rowcol-sm-3 col-sm-offset-4">
<form id="upload-form" action="{{url_for('downloadFile')}}" method="POST" enctype="multipart/form-data">
  <div>
    <input type="submit" class="btn btn-primary btn-lg" value="download">
  </div>
</form>
</div>
</body>
ลอง return send_file('zip/Python.zip', attachment_filename='zip/Python.zip') แบบนี้ดู
benzas00123
PHP Super Member
PHP Super Member
Posts: 244
Joined: 06/01/2020 9:58 am

Re: ขอสอบถามเกี่ยวกับ การ send_file zip ครับ

Post by benzas00123 »

jirawoot wrote: 27/01/2020 4:23 pm
benzas00123 wrote: 25/01/2020 8:44 pm C++ &amp; java &amp; Python-1.png
โดยตัว code ของผมจะเช็คว่าใน folder นั้นมีไฟล์ทั้งหมดกี่ตัว ถ้ามีไฟล์เดียวจะอัพโหลดไฟล์เดียวแต่ถ้ามีหลายไฟล์ จะzip ทั้งหมดก่อนค่อยอัพโหลด
ตัวที่เป็นไฟล์เดียว อัพโหลดแล้ว ลองโหลดเปิดได้ปรกติครับ แต่ที่เป็น file zip ไม่สามารถเปิดได้ครับ โดยผมลองไปเปิดตัว ไฟล์ zip ใน folder ที่ฟังก์ชั่นได้สร้างแล้วเปิดได้ปรกติ แต่พอ send_file ออกมาแล้วมันเปิดไม่ได้


แต่ตัว file zip ที่ฟังก์ชั่นสร้างขึ้นมาเปิดได้ปรกติ

code

Code: Select all

@app.route('/downloadFile', methods=['POST','GET'])
def downloadFile ():
    list = os.listdir(parth)
    numm =len(list)
    if numm == 1:
        for i in os.listdir ( parth ):
            return send_file(parth+i, as_attachment=True)
    else:


        zipf = z.ZipFile ( 'zip/Python.zip', 'w' )
        for root, dirs, files in os.walk ( parth ):
            for file in files:
                zipf.write ( os.path.join ( root, file ) )

            return send_file("zip/Python.zip" ,as_attachment=True)



    return
อันนี้หน้า html ที่ลอง download file ครับ

Code: Select all

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="../static/css/bootstrap.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
  <script src="../static/js/bootstrap.js"></script>
</head>

<body>
<div class="rowcol-sm-3 col-sm-offset-4">
<form id="upload-form" action="{{url_for('downloadFile')}}" method="POST" enctype="multipart/form-data">
  <div>
    <input type="submit" class="btn btn-primary btn-lg" value="download">
  </div>
</form>
</div>
</body>
ลอง return send_file('zip/Python.zip', attachment_filename='zip/Python.zip') แบบนี้ดู
ลองแล้วครับเหมือนเดิมเลย
User avatar
jirawoot
PHP VIP Members
PHP VIP Members
Posts: 3130
Joined: 17/06/2019 10:30 am

Re: ขอสอบถามเกี่ยวกับ การ send_file zip ครับ

Post by jirawoot »

benzas00123 wrote: 27/01/2020 4:44 pm
jirawoot wrote: 27/01/2020 4:23 pm
benzas00123 wrote: 25/01/2020 8:44 pm C++ &amp; java &amp; Python-1.png
โดยตัว code ของผมจะเช็คว่าใน folder นั้นมีไฟล์ทั้งหมดกี่ตัว ถ้ามีไฟล์เดียวจะอัพโหลดไฟล์เดียวแต่ถ้ามีหลายไฟล์ จะzip ทั้งหมดก่อนค่อยอัพโหลด
ตัวที่เป็นไฟล์เดียว อัพโหลดแล้ว ลองโหลดเปิดได้ปรกติครับ แต่ที่เป็น file zip ไม่สามารถเปิดได้ครับ โดยผมลองไปเปิดตัว ไฟล์ zip ใน folder ที่ฟังก์ชั่นได้สร้างแล้วเปิดได้ปรกติ แต่พอ send_file ออกมาแล้วมันเปิดไม่ได้


แต่ตัว file zip ที่ฟังก์ชั่นสร้างขึ้นมาเปิดได้ปรกติ

code

Code: Select all

@app.route('/downloadFile', methods=['POST','GET'])
def downloadFile ():
    list = os.listdir(parth)
    numm =len(list)
    if numm == 1:
        for i in os.listdir ( parth ):
            return send_file(parth+i, as_attachment=True)
    else:


        zipf = z.ZipFile ( 'zip/Python.zip', 'w' )
        for root, dirs, files in os.walk ( parth ):
            for file in files:
                zipf.write ( os.path.join ( root, file ) )

            return send_file("zip/Python.zip" ,as_attachment=True)



    return
อันนี้หน้า html ที่ลอง download file ครับ

Code: Select all

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="../static/css/bootstrap.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
  <script src="../static/js/bootstrap.js"></script>
</head>

<body>
<div class="rowcol-sm-3 col-sm-offset-4">
<form id="upload-form" action="{{url_for('downloadFile')}}" method="POST" enctype="multipart/form-data">
  <div>
    <input type="submit" class="btn btn-primary btn-lg" value="download">
  </div>
</form>
</div>
</body>
ลอง return send_file('zip/Python.zip', attachment_filename='zip/Python.zip') แบบนี้ดู
ลองแล้วครับเหมือนเดิมเลย
ตอน zipf.write ( os.path.join ( root, file ) ) เสร็จแล้วให้ปิดแล้วด้วยโดยใช้คำสั่ง

Code: Select all

zipf.close()
ก่อนที่จะ return
benzas00123
PHP Super Member
PHP Super Member
Posts: 244
Joined: 06/01/2020 9:58 am

Re: ขอสอบถามเกี่ยวกับ การ send_file zip ครับ

Post by benzas00123 »

ขอบคุณครับ
Post Reply
  • Similar Topics
    Replies
    Views
    Last post

Return to “Programming - C/C++ & java & Python”

Who is online

Users browsing this forum: No registered users and 5 guests