![]() ![]() ![]() ![]() |
|||||
|
|||||
樓主 HIRO ![]()
![]() |
"MIMETYPE" 因為想嘗試透過網址來傳遞圖片檔 目前的想法是先把圖片轉換成BASE64 然後直接用網址參數傳遞值 例如: 在網址列傳遞upfile參數 upfile=data:image/gif;base64,R0lGODlhI...(中略)...AADs= 之後透過MIMETYPE檢查他是否為GIF檔 $MIMETYPE{upfile} =~ /gif/i 不過MIMETYPE回傳的值總是為空白,分辨不出圖片格式 請問透過網址來傳遞圖片檔是可行的嗎? 或者是用BASE64是無法傳遞,要使用其他編碼方式呢 懇請各位先進指點,感謝! |
1樓
不錯的參考
小羊窒息 ![]() ![]() |
先撇開CGI不談,
網址參數本身有限制長度 google【url parameter length limit】有很多資訊 像是IE最大支援到2083個字元。。。 ================== 簡單的說,你需要先測試這個網址 upfile=data:image/gif;base64,R0lGODlh 確認upfile有值,而且是【data:image/gif;base64,R0lGODlh】 然後才是把實際圖檔的data uri放在url進行測試... (更直接一點的說法就是:請你先用1KB不到的圖檔來測試)
本篇文章回覆於2018-04-04 22:43
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
2樓
作者回應
HIRO ![]() |
小羊窒息大大你好,網址參數確定有收到
我用的圖檔小小一塊,貼到Chrome可以呈現圖片內容 就是這些~ data:image/gif;base64,R0lGODlhIAAQAPcAAAAAAAAAMwAAZgAAmQAAzAAA/wArAAArMwArZgArmQArzAAr/wBVAABVMwBVZgBVmQBVzABV/wCAAACAMwCAZgCAmQCAzACA/wCqAACqMwCqZgCqmQCqzACq/wDVAADVMwDVZgDVmQDVzADV/wD/AAD/MwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMrADMrMzMrZjMrmTMrzDMr/zNVADNVMzNVZjNVmTNVzDNV/zOAADOAMzOAZjOAmTOAzDOA/zOqADOqMzOqZjOqmTOqzDOq/zPVADPVMzPVZjPVmTPVzDPV/zP/ADP/MzP/ZjP/mTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2YrAGYrM2YrZmYrmWYrzGYr/2ZVAGZVM2ZVZmZVmWZVzGZV/2aAAGaAM2aAZmaAmWaAzGaA/2aqAGaqM2aqZmaqmWaqzGaq/2bVAGbVM2bVZmbVmWbVzGbV/2b/AGb/M2b/Zmb/mWb/zGb//5kAAJkAM5kAZpkAmZkAzJkA/5krAJkrM5krZpkrmZkrzJkr/5lVAJlVM5lVZplVmZlVzJlV/5mAAJmAM5mAZpmAmZmAzJmA/5mqAJmqM5mqZpmqmZmqzJmq/5nVAJnVM5nVZpnVmZnVzJnV/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwAM8wAZswAmcwAzMwA/8wrAMwrM8wrZswrmcwrzMwr/8xVAMxVM8xVZsxVmcxVzMxV/8yAAMyAM8yAZsyAmcyAzMyA/8yqAMyqM8yqZsyqmcyqzMyq/8zVAMzVM8zVZszVmczVzMzV/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8Amf8AzP8A//8rAP8rM/8rZv8rmf8rzP8r//9VAP9VM/9VZv9Vmf9VzP9V//+AAP+AM/+AZv+Amf+AzP+A//+qAP+qM/+qZv+qmf+qzP+q///VAP/VM//VZv/Vmf/VzP/V////AP//M///Zv//mf//zP///wAAAAAAAAAAAAAAACH5BAEAAPwALAAAAAAgABAAAAj/APcpI0avIDFl+/TV2wfN3b6C+ohJYhQjxkBl9ZQh3EeQWDJ69egpA6lQoTJ9+yYBWLlSxQ2RJ5ftEyiQoD6RIutBo/dQZMU0ylRQ2VJlJMiNCIkNW1iQHjGFPIk91KixEBUq0zIh1Dj15kiWw0Te1Ddy5swq2VL9kTasLEZ9MgcOQ8NIxQpl7pw2NbtvmDZtqLYMnLl1ob6lKf34GcYRJ0KUAiUx7jtyGb1oOvfV+7iP0TQ/UsnC1FxypsiwCZeRrVdP4eRChRLOlCpWdsi+eTFCYw1NI87WUmXfnMn0YU13CHlqzHiQHuODCRfyhcwz4u+TGTUeHHYwIuTSPGVzREQZNho9y74vSoK5+7tZhT0fPuV5+WC0tsSe8jVuHDI0syNlNhJ02w1G30yQmUZaQs1pppFW2hGTyWS2ReeeaUY1dlFAADs=
本篇文章回覆於2018-04-04 22:49
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
3樓
作者回應
HIRO ![]() |
補充程式碼
if ($MIMETYPE{upfile} =~ /gif/i) { my $ImgFile = $COMMON_DIR."/".$Q{code}.".gif"; my $upfile=$Q{upfile}; open(OUT,"> $ImgFile"); binmode(OUT); binmode(STDOUT); print OUT $upfile; close(OUT); chmod (0666,$ImgFile); } else { OutError('非GIF圖像。'.$MIMETYPE{upfile}); } 得到輸出結果為'非GIF圖像' (後面空白,正常應該要透過MIMETYPE顯示檔案的類型)
本篇文章回覆於2018-04-04 22:58
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
4樓 |
可以讀的到資料的話,剩下的大概就是你得轉檔了
實際把base64的文字存成圖檔,然後才利用MIMETYPE進行判定
本篇文章回覆於2018-04-04 23:32
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
5樓
作者回應
HIRO ![]() |
我覺得自己的思緒有誤,所以在此補充一些
原本是打算不要透過upfile,改成用網址傳遞參數 測試的樣本是一個txt檔,內容"123" 使用upfile上傳時,網頁會顯示"非GIF檔",然後顯示這個是txt檔 測試到這邊我突然發覺.... 就算我透過網址傳遞txt的內容(123),MIMETYPE只看內容當然也不會知道這是個txt檔 目前是卡關在這邊,就算我把GIF這個圖檔轉換成數值並成功傳送了,MIMETYPE只看到內容也不會知道他是個GIF檔 大概是這種感覺 似乎真的無解了orz
本篇文章回覆於2018-04-05 20:56
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
6樓
最有價值解答
香帥 ![]() |
請參考
淺談 HTTP Method:表單中的 GET 與 POST 有什麼差別? 建議前端用post方法,由Content-Type去判別。 若要強制用MIMETYPE來判別檔案,請先表明您的cgi是用什麼語言寫的,及提供前端的html碼來供測試,更容易得到幫助。 例如本篇 http://www.blueshop.com.tw/board/FUM20041006152616ZC6/BRD201201251825105FQ/1.html 後來才知樓主的cgi是用perl寫的。
本篇文章回覆於2018-04-07 21:01
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
7樓 |
小弟剛來此,想要發問,可是找不到路徑,有大大可以私下傳訊息告訴我~~~這裡怎麼發表問題問大家~~~抱歉打擾大家
本篇文章回覆於2018-05-21 12:39
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
回覆 |
如要回應,請先登入. |