עבור לתוכן

העלאת תמונה מ- Silverlight (או כל אפליקצית .NET Client) לשרת PHP

Featured Replies

פורסם

היי

אני עובד על אפליקצית Silverlight שממנה משתמש מעלה פרטים טקסטואלים שלו לשרת + תמונת Jpeg.

כרגע מימשתי את העלאת הנתונים (בלי התמונה עד עכשיו) דרך PHP Web Service שיושב על השרת שלי ומקבל את הנתונים הטקסטואלים ושומר אותם ל-DB.

בשביל להעלות את התמונה עלו לי כמה רעיונות אפשריים -

1. לשלוח את התמונה כמערך של byte[] שיתווסף לאוסף הנתונים שה- WebService מקבל. משם התמונה תשמר כקובץ Jpeg על השרת.

2. לשלוח את התמונה בתוך POST לשירות REST פשוט ונפרד על השרת.

האופציה הראשונה עדיפה עלי, כי אני לא אצטרך לדאוג לבעיות בשמירה של התמונה ושאר הנתונים בנפרד, לבעיות בתזמון וכו...

העניין הוא שעד עכשיו ניסיתי את האופציה הראשונה, נראה ש-Silverlight שולח את הנתונים כראוי. אבל בצד ה- PHP אני לא מצליח ממש לראות את מערך ה- Bytes - כשאני מדפיס אותו כל מה שאני מקבל זה את הג'יבריש הזה - ״א מה גם שנורא קצר - ממש לא הגיוני ביחס לגודל של הקובץ - אני רואה שה- Silverlight שולח לו מה שנראה כמו String ארוך מאוד של כל מני אותיות וסימנים שמתחיל ככה

/9j/4AAQSkZJRgABAQEAYABgAAD/4QBmRXhpZgAASUkqAAgA

למישהו יש מושג למה ב- PHP אני רואה את זה ככה? ועוד ככה קצר? זה תקין?

ב- WSDL שלי זה השדה הזה מוגדר כך -

<xsd:element name="picture" type="xsd:base64Binary" />

אשמח לקבל חוות דעת ועזרה ממישהו שיש לו ניסיון או רעיון בנושא.

תודה!

פורסם

אל תיהיה ערבי, תעבוד עם MIME.

אם אתה עובד בצורה שלך, אתה צריך להפריד את הנתונים של כל קובץ אל מערך BYTE נפרד, מה שלא כלכך פשוט או יעיל לממש.

תיצור הודעת MIME, שמכילה את כל התוכן שאתה רוצה(אתה מפריד את התוכן בתוך ההודעה לדוגמא: Content-Type: text/plain)

כל התוכן שאתה רוצה עובר כASCII בתוך ההודעה(כמו שזה עובר במיילים).

http://msdn.microsoft.com/en-us/library/system.net.mime.aspx

פורסם
  • מחבר

אני הגעתי למצב של הפרדה של הקובץ לתוך מערך של byte. זה לא היה מסובך.. יכול להיות שאתה מתכוון למשהו אחר? כי אם זה כל מה שהייתי צריך להגיע אליו, אז אני מעדיף אותו מאשר לתחיל להתעסק עם עוד פרוטוקול.

בקיצור אני מסוגל לשלוח מערך של byte[] שמכיל בתוכו את כל הנתונים של התמונה. האם זה אמור לעבוד לי בדרך הנוכחית שאותה אני מנסה להפעיל?

פורסם

כן אם אתה שומר את המערך כקובץ זה אמור לעבוד.

MIME זה לא "עוד" פרוטוקול זה הפרוטוקול הכי פשוט לעביר בו תכנים בצורה הזאתי.

אתה מרכיב הודעת MIME, וכל דבר שתומך בMIME יידע לקרוא אותה.

פורסם

אם כך אשאל אילו עוד דרכים חןץ מ

Mime

יש ?

פורסם

אתה יכול לתקוע את כל התוכן למערך יחיד של BYTE, אתה גם יכול לשלוח גם אחר פר קובץ, בשונה מMIME שמיושם בכל דבר בעולם בערך, אתה תצתרך לכתוב קוד שיידע לשחזר את המערך לקובץ בינארי בצד השני.

סתם בלאגן מיותר כשיש לך תקן שתומך בהעברת הודעות טקסט + קבצים כAttachment, מכיל בתוכו CRC ודברים נוספים, תומך בהצפנה(SMIME), ומוכר ע"י כל העולם.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים