ABA


"קבלה של Headers דרך POST Jquery"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #11185 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 11185
hezhez  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 11.5.02
1123 הודעות, 1 פידבק
   11:51   19.02.13   
אל הפורום  
  קבלה של Headers דרך POST Jquery  
 
עבר עריכה לאחרונה בתאריך 21.02.13 בשעה 14:42 על-ידי Ice Cold (מנהל הפורום)
 
יש לי קובץ בPHP שאני קורא לו ב$.POST שקובץ הPHP מייצר קובץ ZIP להורדה,

אבל הPOST לא יודע לקבל את הHeader בריספונד ..

יש רעיונות ?

לדוגמא:

קובץ PHP:
if (file_exists($file)) {
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$file");
header("Content-Type: application/zip");
header("Content-Transfer-Encoding: binary");
readfile($file);
}

וקריאה פשוטה בJquery:
$.post('genFile.php', {data : data}, function(url) {

});


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  מכתב יוחאי 19.02.13 11:53 1
     קראתי את הפוסט הזה כבר, ומה שהם כותבים שם לא עובד ... אני אוכל על זה כאפה hezhez  19.02.13 11:59 2
         תעלה את ה-Javascript שלך. יוחאי 19.02.13 12:22 3
             טוב קבל את הדבר הבא - hezhez  20.02.13 16:11 4
                 מה הקשר קבלה של HEADERS? CaTz 20.02.13 19:54 5
                     אז ככה, hezhez  20.02.13 20:00 6
                 ברור שזה לא יעבוד, יוחאי 20.02.13 20:04 7
                     לא מדוייק hezhez  20.02.13 20:07 8
                         אבל איך אתה מעביר מערך דרך POST ורץ עליו עם foreach? יוחאי 20.02.13 20:09 9
                             זה מה שרשמתי באחת התגובות הקודמות hezhez  20.02.13 20:13 10
                                 תנסה לקצר לנו ולך... CaTz 20.02.13 21:24 11
                                     חחחח , זה פשוט hezhez  21.02.13 11:49 12
                                         זה מחזיק מערך של בייטים של התמונות?! CaTz 21.02.13 23:31 13
                                             אני מחזיק כתובות של התמונות בArray hezhez  22.02.13 01:46 14
                                                 OK CaTz 22.02.13 07:41 15
                                                     אז ככה hezhez  22.02.13 08:23 16
                                                         מוזר... CaTz 22.02.13 15:30 17
                                                             מצטרף, מה שאתה אומר פשוט שקול ל- יוחאי 22.02.13 17:28 18

       
יוחאי
חבר מתאריך 30.12.15
163 הודעות
   11:53   19.02.13   
אל הפורום  
  1. מכתב  
בתגובה להודעה מספר 0
 
   http://stackoverflow.com/questions/1557602/jquery-and-ajax-response-header

ד"א

תשתמש ב-$.ajax


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
hezhez  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 11.5.02
1123 הודעות, 1 פידבק
   11:59   19.02.13   
אל הפורום  
  2. קראתי את הפוסט הזה כבר, ומה שהם כותבים שם לא עובד ... אני אוכל על זה כאפה  
בתגובה להודעה מספר 1
 


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
יוחאי
חבר מתאריך 30.12.15
163 הודעות
   12:22   19.02.13   
אל הפורום  
  3. תעלה את ה-Javascript שלך.  
בתגובה להודעה מספר 2
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
hezhez  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 11.5.02
1123 הודעות, 1 פידבק
   16:11   20.02.13   
אל הפורום  
  4. טוב קבל את הדבר הבא -  
בתגובה להודעה מספר 3
 
עבר עריכה לאחרונה בתאריך 21.02.13 בשעה 14:43 על-ידי Ice Cold (מנהל הפורום)
 
הרעיון בעיקרון הוא לקחת מספר תמונות, וליצור מהן קובץ ZIP.

זה הPHP שלי -

שים לב שהfiles זה POST של ARRAY שמתקבל מקריאה בJS - צא מנקודת הנחה שהוא נשלח תקין.

מה שבעצם הקוד עושה, הוא קורא את תוכן הקובץ (אחת מהתמונות שנשלחות בPOST ונכנסות לARRAY) וכותב אותן אחת אחת לתוך קובץ ZIP - הקוד הזה לא עובד, אבל הדבר ההזוי הוא, אם אני אקח את השורת קוד הזאת -


$files = $_POST['photoslist'];

ואחליף אותה ב


$files = array('url','url','url');

זה יעבוד פשוט מעולה, יקח את התמונות ויעשה מהן ZIP

אני לא מצליח להבין למה הוא לא מצליח לקווץ אותם שהן נשלחות בPOST מJS, אבל שאני מזין אותן ידנית הוא כן מקווץ ...


<?php

$files = $_POST['photoslist'];

$zip = new ZipArchive();

$tmp_file = tempnam('.','');
$zip->open($tmp_file, ZipArchive::CREATE);

foreach($files as $file){

$download_file = file_get_contents($file);

$zip->addFromString(basename($file),$download_file);

}

$zip->close();

header('Content-disposition: attachment; filename=download.zip');
header('Content-type: application/zip');
readfile($tmp_file);

?>


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
CaTz
חבר מתאריך 2.10.04
14537 הודעות
   19:54   20.02.13   
אל הפורום  
  5. מה הקשר קבלה של HEADERS?  
בתגובה להודעה מספר 4
 
   אם הבנתי אותך נכון, יש לך טופס שאתה שולח עם AJAX, כשבטופס אתה מעלה את הקבצים...אתה מצפה לקבלם ה-POST.

השאלה הגדולה היא איך אתה שולח?
השאלה השנייה, אתה יודע שלא כל הדפדפנים תומכים בעלאה של קובץ עם AJAX?

תקרא את זה, בHTML5 אפשר לעלות קובץ עם קריאת AJAX.
http://stackoverflow.com/questions/2320069/jquery-ajax-file-upload


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
hezhez  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 11.5.02
1123 הודעות, 1 פידבק
   20:00   20.02.13   
אל הפורום  
  6. אז ככה,  
בתגובה להודעה מספר 5
 
אני לא שולח קבצים, אלא מוריד אותם(כמות של תמונות) כקובץ ZIP, הHEADERS פה נכנסים לפעולה על מנת לייצר את ההורדה עצמה של הקובץ.

והקריאה נראית ככה:

$.post('dlphotos.php', {photoslist : photosList}, function(url) {
$("body").append("<iframe src='dlphotos.php?url="+url+"' style='display: none;'></iframe>");

});


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
יוחאי
חבר מתאריך 30.12.15
163 הודעות
   20:04   20.02.13   
אל הפורום  
  7. ברור שזה לא יעבוד,  
בתגובה להודעה מספר 4
 
   אתה איך שהוא מצפה שדרך המשתנה הגלובאלי $_POST אתה תקבל גם קבצים? זה לא עובד ככה.

אתה קודם כל צריך לעלות את הקובץ שלך לשרת דרך המשתנה הגלובאלי $_FILES ושימוש בmove_uploaded_file

http://php.net/move_uploaded_file

אחרי שהעלאת אותו לשרת וקיבלת URL תקין תעביר את זה לzip שלך.

עוד משהו קטן תוודא שבטופס HTML שלך אתה משתמש בmultipart/form-data בenctype.

אם אתה מעלה את הקבצים עם ajax אז יש המון פלאגינים לjquery שעושים את זה.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
hezhez  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 11.5.02
1123 הודעות, 1 פידבק
   20:07   20.02.13   
אל הפורום  
  8. לא מדוייק  
בתגובה להודעה מספר 7
 
דרך הPOST אני לא מעביר את הקבצים, אני מעביר את הURL שלהם .. הטיפול בהם נעשה בקובץ PHP עצמו (עם ולידאציות) הResponse עצמו בJS אמור לייצא רק את ההורדה של הקובץ ZIP.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
יוחאי
חבר מתאריך 30.12.15
163 הודעות
   20:09   20.02.13   
אל הפורום  
  9. אבל איך אתה מעביר מערך דרך POST ורץ עליו עם foreach?  
בתגובה להודעה מספר 8
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
hezhez  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 11.5.02
1123 הודעות, 1 פידבק
   20:13   20.02.13   
אל הפורום  
  10. זה מה שרשמתי באחת התגובות הקודמות  
בתגובה להודעה מספר 9
 
המעבר של המערך בPOST עובר בצורה מדוייקת, העניין הוא פה שהקובץ PHP לא מצליח לעשות לו File_get_content() אבל, אם אני אזין בarray() בקובץ PHP עצמו את אותם כתובות של התמונות שעוברות בPOST ידנית, זה יעבוד, בקיצור, משהו הזוי.

אתה מוזמן לעשות בדיקה מאוד פשוטה, קח את הקובץ PHP שכתבתי פה, תכניס לו סתם URL של תמונה בתוך מערך, תריץ את הPHP תראה איך הוא מוריד אותה, ואז תעשה בדיקה נוספת - תעביר את אותו URL בPOST מקובץ JS תראה איך הוא לא מוריד אותו.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
CaTz
חבר מתאריך 2.10.04
14537 הודעות
   21:24   20.02.13   
אל הפורום  
  11. תנסה לקצר לנו ולך...  
בתגובה להודעה מספר 10
 
   תסביר מה אתה רוצה לעשות בדיוק, ממש לא מובן מכל השרשור לאן אתה חותר :]


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
hezhez  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 11.5.02
1123 הודעות, 1 פידבק
   11:49   21.02.13   
אל הפורום  
  12. חחחח , זה פשוט  
בתגובה להודעה מספר 11
 
יש לי קובץ JS שבתוכו אני מחזיק Array של URL של תמונות מסויימות, אני פשוט רוצה שבOnclick כל התמונות ששמורות בArray יכווצו לZIP וירדו למחשב.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
CaTz
חבר מתאריך 2.10.04
14537 הודעות
   23:31   21.02.13   
אל הפורום  
  13. זה מחזיק מערך של בייטים של התמונות?!  
בתגובה להודעה מספר 12
 
   או כתובות שלהן על השרת?

זה לא כזה ברור...חחח

בכל אופן, לדעתי אתה לא יכול לקבץ משהו אם הוא לא על השרת.
אם זה כן על השרת, ואתה שולח URL (כתובות, שמות משהו שמזהה) את התמונות,
אז אני לא מבין מה הבעיה.


אם זו האפשרות הראשונה, ז"א טענת לזיכרון של המשתמש תמונה עם קריאה של קבצים ב-HTML5, אתה עדיין חייב לעלות לשרת בשביל לקבץ. (ד"א אם זה המצב, לא מבין מה אתה מספק ללקוח? שירות קיבוץ? חחח)
בכל מקרה, זה אולי יעזור לך
http://stackoverflow.com/questions/7431365/filereader-readasbinarystring-to-upload-files


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
hezhez  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 11.5.02
1123 הודעות, 1 פידבק
   01:46   22.02.13   
אל הפורום  
  14. אני מחזיק כתובות של התמונות בArray  
בתגובה להודעה מספר 13
 
תראה את הדוגמא הבאה :

# define file array
$files = array(
'http://google.com/images/logo.png',
'http://upload.wikimedia.org/wikipedia/commons/thumb/5/53/Wikipedia-logo-en-big.png/220px-Wikipedia-logo-en-big.png'
);

# create new zip opbject
$zip = new ZipArchive();

# create a temp file & open it
$tmp_file = tempnam('.','');
$zip->open($tmp_file, ZipArchive::CREATE);

# loop through each file
foreach($files as $file){

# download file
$download_file = file_get_contents($file);

#add it to the zip
$zip->addFromString(basename($file),$download_file);

}

# close zip
$zip->close();

# send the file to the browser as a download
header('Content-disposition: attachment; filename=download.zip');
header('Content-type: application/zip');
readfile($tmp_file);

אם תריץ אותה על קובץ PHP, שתי התמונות שנמצאות בתוך המערך ירדו לך כקובץ ZIP, מה שאני מנסה לעשות ולא מצליח - זה להעביר לתוך המערך פה בקובץ ה-PHP כתובות פיסיות בPOST ממערך שנמצא בקובץ JS.

נראה לי זה הכי ברור שיכולתי לכתוב חחחחח (ותודה על העזרה)...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
CaTz
חבר מתאריך 2.10.04
14537 הודעות
   07:41   22.02.13   
אל הפורום  
  15. OK  
בתגובה להודעה מספר 14
 
   ערכתי לאחרונה בתאריך 22.02.13 בשעה 07:47 בברכה, CaTz
 
ז"א, יש לך מערך של כתובות ב-JS, אתה שולח אותו בPOST, זה לא מגיע?
אם לא, איך אתה שולח את זה בצד של ה-JS?

ד"א יש לך דרך לרשום קוד שיהיה מיושר לשמאל פה בפורום,
[code][/code]


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
hezhez  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 11.5.02
1123 הודעות, 1 פידבק
   08:23   22.02.13   
אל הפורום  
  16. אז ככה  
בתגובה להודעה מספר 15
 
יש לי מערך של כתובות בJS, אני שולח אותו בPOST הוא מגיע כמו שצריך ב Structure תקין (אני בודק את זה עם print_r), המערך בנוי בPHP כמו שצריך, אבל הוא פשוט לא מוריד לי את זה בZIP כמו שצריך.... תיקח את אותן כתובות שהעברת בPOST, תכניס אותן ידני אל תוך המערך, והוא יוריד אותן...

משהו הזוי !


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
CaTz
חבר מתאריך 2.10.04
14537 הודעות
   15:30   22.02.13   
אל הפורום  
  17. מוזר...  
בתגובה להודעה מספר 16
 
   יש מצב להסתכל על זה לייב?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
יוחאי
חבר מתאריך 30.12.15
163 הודעות
   17:28   22.02.13   
אל הפורום  
  18. מצטרף, מה שאתה אומר פשוט שקול ל-  
בתגובה להודעה מספר 17
 
   כתבתי קוד בבוקר, הוא עבד מצויין, בלילה הוא פשוט הפסיק לעבוד.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net