_GetFileInfo

HTTP Requests

_GetFileInfo

Top  Previous  Next

 

Lấy thông tin của tập tin: Tên - Kiểu - Nội dung

 

_GetFileInfo($sFilePath [, $vDataTypeReturn = 1 ])

 

 

 

* Tham số

$sFilePath

Đường dẫn của tập tin cần lấy thông tin

$vDataTypeReturn

Xem Giá trị trả về bên dưới.

 

 

 

* Giá trị trả về

Trả về mảng 1 chiều gồm 3 phần tử:

·[0] FileName: Tên tập tin
·[1] Content-Type: Kiểu tập tin
·[2] Data: Nội dung tập tin, phụ thuộc vào tham số $vDataTypeReturn sẽ trả về các dạng sau:
§0: Binary
§1: String
§2: Base64

 

 

 

* Ghi chú

·_GetFileInfo thường được sử dụng khi POST upload (multipart/form-data) tập tin lên server.

 

·_GetFileInfo đã được tích hợp trong hàm _HttpRequest_CreateDataForm vì vậy cũng rất hiếm khi phải sử dụng đến hàm này, trừ khi muốn tạo Form-Data bằng tay.

 

 

 

 

* Ví dụ

Upload Text lên trang:

http://www.uploadedit.com/_to-upload-documents-onto-internet-PLAIN-TEXT-TXT-hosting.htm

 

Ta vào trang trên, chọn tập tin txt cần upload → mở Live HTTP Headers lên (nếu mở rồi thì bấm Clear để xoá các request cũ cho đỡ rối) → Bấm nút Upload trên trang web → Ta được thông tin về request như sau:

 

http://www.uploadedit.com/_to-upload-documents-onto-internet-PLAIN-TEXT-TXT-hosting.htm

 

POST /_to-upload-documents-onto-internet-PLAIN-TEXT-TXT-hosting.htm HTTP/1.1

Host: www.uploadedit.com

User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:51.0) Gecko/20100101 Firefox/51.0 Cyberfox/51.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Referer: http://www.uploadedit.com/_to-upload-documents-onto-internet-PLAIN-TEXT-TXT-hosting.htm

Cookie: PHPSESSID=66c042553ae6cdb5ea11b52dfdc14399;

Content-Type: multipart/form-data; boundary=---------------------------1545216715435

Content-Length: 325

-----------------------------1545216715435

Content-Disposition: form-data; name="my_field"; filename="123.txt"

Content-Type: text/plain

 

test thử upload

-----------------------------1545216715435

Content-Disposition: form-data; name="Submit"                                             → DataToSend

 

- - - UPLOAD - - -

-----------------------------1545216715435--

 

 

(Xem thêm về hàm _BoundaryGenerator để hiểu rõ hơn về code mẫu bên dưới)

#include <_HttpRequest.au3>

$sFilePath = FileOpenDialog('Chọn 1 tập tin txt', '', 'txt (*.txt)')

If @error Then Exit

$HOST = 'http://www.uploadedit.com/_to-upload-documents-onto-internet-PLAIN-TEXT-TXT-hosting.htm'

Local $aFileInfo = _GetFileInfo($sFilePath)

;--------------------------------------------------------------------

$sBoundary = _BoundaryGenerator()

$CDFAN = 'Content-Disposition: form-data; name='

$xd = @CRLF & @CRLF

$sDataToSend = $sBoundary & @CRLF

$sDataToSend &= $CDFAN & '"my_field"; filename="' & $aFileInfo[0] & '"' & @CRLF

$sDataToSend &= 'Content-Type: ' & $aFileInfo[1] & $xd

$sDataToSend &= $aFileInfo[2] & @CRLF

$sDataToSend &= $sBoundary & @CRLF

$sDataToSend &= $CDFAN & '"Submit"' & $xd & '- - - UPLOAD - - -' & @CRLF

$sDataToSend &= $sBoundary & '--'

;--------------------------------------------------------------------

$rq = _HttpRequest(2, $HOST, $sDataToSend, '', $HOST)

_HttpRequest_Test($rq)

 

Lưu ý _HttpRequest ở code trên có gán tham số $sReferer, tham số này thường thì không cần gán nhưng ở trường hợp trang này thì phải gán Referer mới request thành công. (Xem thêm về $sReferer để hiểu rõ hơn)

 

 

Ví dụ ở trên là làm bằng tay, viết từ đầu tới cuối khá cực. Ta có thể sử dụng hàm _HttpRequest_CreateDataForm để

code sẽ thấy đơn giản hơn rất nhiều: (Xem thêm về _HttpRequest_CreateDataForm để biết cách sử dụng)

 

#include <_HttpRequest.au3>

$sFilePath = FileOpenDialog('Chọn 1 tập tin txt', '', 'txt (*.txt)')

If @error Then Exit

$HOST = 'http://www.uploadedit.com/_to-upload-documents-onto-internet-PLAIN-TEXT-TXT-hosting.htm'

Local $aForm = [['$my_field', $sFilePath], ['Submit', '- - - UPLOAD - - -']]

$sDataToSend = _HttpRequest_CreateDataForm($aForm)

$rq = _HttpRequest(2, $HOST, $sDataToSend, '', $HOST)

_HttpRequest_Test($rq)