පළමු පරාසය මෙතැනින් කියවන්න!
මෙය වසර 3 ක් ප්රමාද බව මම දනිමි, නමුත් මැට්ගේ (පිළිගත්) පිළිතුර අසම්පූර්ණ වන අතර අවසානයේ ඔබව කරදරයට පත් කරනු ඇත. මෙහි ඇති ප්රධාන ඔබ භාවිතා කිරීමට තෝරා නම්, ය multipart/form-data, මායිම් යුතු නොවේ සේවාදායකය අවසානයේ ලැබෙන බව ගොනුව දත්ත දක්වයි.
සීමාවක් නොමැති නිසා මෙය ගැටළුවක් application/x-www-form-urlencodedනොවේ. x-www-form-urlencodedඑක් අත්තනෝමතික බයිට් එකක් බයිට් තුනකට හැරවීමේ සරල උපයෝගීතාවයෙන් සෑම විටම ද්විමය දත්ත හැසිරවිය හැකිය 7BIT. අකාර්යක්ෂමයි, නමුත් එය ක්රියාත්මක වේ (සහ ගොනු නාම සහ ද්විමය දත්ත යැවීමට නොහැකි වීම පිළිබඳ අදහස් දැක්වීම වැරදියි; ඔබ එය වෙනත් යතුරක් / අගය යුගලයක් ලෙස යවන්න).
ගැටළුව multipart/form-dataවන්නේ මායිම් බෙදුම්කරු ලිපිගොනු දත්තවල නොතිබිය යුතුය ( RFC 2388 බලන්න ; 5.2 වගන්තියේ මෙම ගැටළුව මඟහරවා ගත හැකි නිසි MIME වර්ගයක් නොතිබීම සඳහා තරමක් කම්මැලි නිදහසට කරුණක් ඇතුළත් වේ).
එබැවින්, බැලූ බැල්මට, ඕනෑම ගොනුවක් උඩුගත කිරීමේදී, ද්විමය හෝ වෙනත් ආකාරයකින් multipart/form-dataකිසිදු වටිනාකමක් නැත . ඔබ නිවැරදිව ඔබගේ සීමාව තෝරා නැති නම්, ඔබ ඇත අවසානයේ ප්රශ්නයක්, ඔයා තමයි සරල පෙළ හෝ අමු ද්විමය යැවීම යන්න ඇති - සේවාදායකය වැරදි තැනක හතරේ සොයා ඇත, හා ඔබේ ගොනුව ලොප් වේ, හෝ තැපැල් අසමත් වනු ඇත.
ප්රධාන දෙය නම් කේතනය කරන ලද නිමැවුමේ ඔබේ තෝරාගත් මායිම් අක්ෂර දිස්විය නොහැකි වන පරිදි කේතන ක්රමයක් සහ මායිමක් තෝරා ගැනීමයි. එක් සරල විසඳුමක් භාවිතා කිරීමයි base64(නෑ නෑ අමු ද්විමය භාවිතා කරන්න). දී base64 ප්රතිදානය චරිත සමූහයක් යනු එහිදී 3 අත්තනෝමතික බයිට්, 7-bit හතර චරිත බවට කේතනය කොට තිබේ [A-Za-z0-9+/=](එනම් අක්ෂර සංඛ්යා, '+', '/' හෝ '='). =විශේෂ අවස්ථාවක් වන අතර එය සංකේතවත් කළ ප්රතිදානයේ අවසානයේ තනි =හෝ ද්විත්ව ලෙස පමණක් දිස්විය හැකිය ==. දැන්, ඔබේ සීමාව 7-බිට් ASCII නූලක් ලෙස තෝරන්න base64. ඔබ මෙම පරීක්ෂණය අසමත් ශුද්ධ දකින බොහෝ තෝරා ගැනීම් - මෙම MDN ආකෘති ලේඛන, උදාහරණයක් ලෙස, ද්විමය දත්ත යැවීමේදී මායිමක් ලෙස "blob" භාවිතා කරන්න - හොඳ නැත. කෙසේ වෙතත්, "! බ්ලොබ්!" කිසි විටෙකත් base64ප්රතිදානයේ නොපෙන්වයි .