台灣最大程式設計社群網站
線上人數
1784
 
會員總數:243325
討論主題:188102
歡迎您免費加入會員
討論區列表 >> 其他語言 >> CGI的MIMETYPE使用方法
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
CGI的MIMETYPE使用方法
價值 : 500 QP  點閱數:608 回應數:7

樓主

HIRO
門外漢
0 7
898 13
發送站內信

大家好,最近在研究一個CGI語法
"MIMETYPE"
因為想嘗試透過網址來傳遞圖片檔
目前的想法是先把圖片轉換成BASE64
然後直接用網址參數傳遞值

例如:
在網址列傳遞upfile參數
upfile=data:image/gif;base64,R0lGODlhI...(中略)...AADs=

之後透過MIMETYPE檢查他是否為GIF檔
$MIMETYPE{upfile} =~ /gif/i

不過MIMETYPE回傳的值總是為空白,分辨不出圖片格式
請問透過網址來傳遞圖片檔是可行的嗎?
或者是用BASE64是無法傳遞,要使用其他編碼方式呢
懇請各位先進指點,感謝!






搜尋相關Tags的文章: [ CGI ] , [ MIMETYPE ] ,
本篇文章發表於2018-04-04 21:28
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
不錯的參考

小羊窒息
捐贈 VP 給 小羊窒息 檢舉此回應
先撇開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樓
回應

小羊窒息
捐贈 VP 給 小羊窒息 檢舉此回應
可以讀的到資料的話,剩下的大概就是你得轉檔了

實際把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
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.