के साथ एचटीएमएल फॉर्म में <इनपुट \ इनपुट> के माध्यम से एक फ़ाइल अपलोड करें मैं OCR Site पर एक तस्वीर फ़ाइल अपलोड करने की कोशिश कर रहा हूं, हालांकि, पीडीएफ फाइल साइट पर अपलोड नहीं होती है।वीबीए
Sub DownPDF()
Dim FileName As String: FileName = "C:\Users\310217955\Documents\pdfdown\SGSSI001_HL1464_2011.pdf"
Dim DestURL As String: DestURL = "https://www.newocr.com/"
Dim FieldName As String: FieldName = "userfile"
Call UploadFile(DestURL, FileName, FieldName)
End Sub
'******************* upload - begin
'Upload file using input type=file
Sub UploadFile(DestURL, FileName, FieldName)
'Boundary of fields.
'Be sure this string is Not In the source file
Const Boundary = "---------------------------"
Dim FileContents, FormData
'Get source file As a binary data.
FileContents = GetFile(FileName)
'Build multipart/form-data document
FormData = BuildFormData(FileContents, Boundary, FileName, FieldName)
'Post the data To the destination URL
IEPostBinaryRequest DestURL, FormData, Boundary
End Sub
'Build multipart/form-data document with file contents And header info
Function BuildFormData(FileContents, Boundary, FileName, FieldName)
Dim FormData, Pre, Po
Const ContentType = "application/upload"
'The two parts around file contents In the multipart-form data.
Pre = "--" + Boundary + vbCrLf + mpFields(FieldName, FileName, ContentType)
Po = vbCrLf + "--" + Boundary + "--" + vbCrLf
'Build form data using recordset binary field
Const adLongVarBinary = 205
Dim RS: Set RS = CreateObject("ADODB.Recordset")
RS.Fields.Append "b", adLongVarBinary, Len(Pre) + LenB(FileContents) + Len(Po)
RS.Open
RS.AddNew
Dim LenData
'Convert Pre string value To a binary data
LenData = Len(Pre)
RS("b").AppendChunk (StringToMB(Pre) & ChrB(0))
Pre = RS("b").GetChunk(LenData)
RS("b") = ""
'Convert Po string value To a binary data
LenData = Len(Po)
RS("b").AppendChunk (StringToMB(Po) & ChrB(0))
Po = RS("b").GetChunk(LenData)
RS("b") = ""
'Join Pre + FileContents + Po binary data
RS("b").AppendChunk (Pre)
RS("b").AppendChunk (FileContents)
RS("b").AppendChunk (Po)
RS.Update
FormData = RS("b")
RS.Close
BuildFormData = FormData
End Function
'sends multipart/form-data To the URL using IE
Function IEPostBinaryRequest(URL, FormData, Boundary)
'Create InternetExplorer
Dim IE: Set IE = CreateObject("InternetExplorer.Application")
'You can uncoment Next line To see form results
IE.Visible = True
'Send the form data To URL As POST multipart/form-data request
IE.Navigate URL, , , FormData, _
"Content-Type: multipart/form-data; boundary=" + Boundary + vbCrLf
Do While IE.Busy Or IE.readyState <> 4
Wait 1, "Upload To " & URL
Loop
'Get a result of the script which has received upload
On Error Resume Next
IEPostBinaryRequest = IE.document.body.innerHTML
'IE.Quit
End Function
'Infrormations In form field header.
Function mpFields(FieldName, FileName, ContentType)
Dim MPTemplate 'template For multipart header
MPTemplate = "Content-Disposition: form-data; name=""{field}"";" + _
" filename=""{file}""" + vbCrLf + _
"Content-Type: {ct}" + vbCrLf + vbCrLf
Dim Out
Out = Replace(MPTemplate, "{field}", FieldName)
Out = Replace(Out, "{file}", FileName)
mpFields = Replace(Out, "{ct}", ContentType)
End Function
Sub Wait(Seconds, Message)
On Error Resume Next
CreateObject("wscript.shell").Popup Message, Seconds, "", 64
End Sub
'Returns file contents As a binary data
Function GetFile(FileName)
Dim Stream: Set Stream = CreateObject("ADODB.Stream")
Stream.Type = 1 'Binary
Stream.Open
Stream.LoadFromFile FileName
GetFile = Stream.Read
Stream.Close
End Function
'Converts OLE string To multibyte string
Function StringToMB(S)
Dim I, B
For I = 1 To Len(S)
B = B & ChrB(Asc(Mid(S, I, 1)))
Next
StringToMB = B
End Function
'******************* upload - end
'******************* Support
'Basic script info
Sub InfoEcho()
Dim Msg
Msg = Msg + "Upload file using http And multipart/form-data" & vbCrLf
Msg = Msg + "Copyright (C) 2001 Antonin Foller, PSTRUH Software" & vbCrLf
Msg = Msg + "use" & vbCrLf
Msg = Msg + "[cscript|wscript] fupload.vbs file url [fieldname]" & vbCrLf
Msg = Msg + " file ... Local file To upload" & vbCrLf
Msg = Msg + " url ... URL which can accept uploaded data" & vbCrLf
Msg = Msg + " fieldname ... Name of the source form field." & vbCrLf
Msg = Msg + vbCrLf + CheckRequirements
WScript.Echo Msg
WScript.Quit
End Sub
'Checks If all of required objects are installed
Function CheckRequirements()
Dim Msg
Msg = "This script requires some objects installed To run properly." & vbCrLf
Msg = Msg & CheckOneObject("ADODB.Recordset")
Msg = Msg & CheckOneObject("ADODB.Stream")
Msg = Msg & CheckOneObject("InternetExplorer.Application")
CheckRequirements = Msg
' MsgBox Msg
End Function
'Checks If the one object is installed.
Function CheckOneObject(oClass)
Dim Msg
On Error Resume Next
CreateObject oClass
If Err = 0 Then Msg = "OK" Else Msg = "Error:" & Err.Description
CheckOneObject = oClass & " - " & Msg & vbCrLf
End Function
यहाँ एचटीएमएल खंड है:
मैं निम्नलिखित कोड का उपयोग कर रहा इसे प्राप्त करने के और नीचे HTML खंड है।
<input name="userfile" id="userfile" type="file">
1, आप 'URL' को नेविगेट कर रहे हैं, लेकिन DestURL' घोषित' इतना कोड होना चाहिए: 'WebBrowser.Navigate DestURL'। दूसरा, एचटीएमएल स्रोत देखें। उस यूआरएल पर फ़ाइल चयन बॉक्स आईफ्रेम में है, इसलिए इनपुट को वास्तव में 'fileUpload' कहा जाता है और फ्री- online-ocr.com/upload.aspx पर रहता है। उस पृष्ठ पर अन्य नियंत्रण प्रोग्रामेटिक रूप से बनाए और छुपाए गए हैं (उदाहरण के लिए '__EVENTVALIDATION') और संभवतः उनकी नि: शुल्क सेवा के स्क्रिप्ट किए गए स्वचालन को रोकने के लिए मौजूद हैं। ऐसा हो सकता है कि फ़ाइल को भेजने के बजाय जैसे बटन दबाया गया हो, आप फ़ाइल चयन प्रक्रिया को स्वचालित करने की जांच कर सकते हैं। – Tim
मैंने इसे फिर से देखा, और आपके पास एक और समस्या है। आपके विवरण में लिंक (ओसीआर साइट) newocr.com पर है, लेकिन आपके कोड में लिंक मुफ्त- online-ocr.com है। इससे यह स्पष्ट नहीं होता है कि आप वास्तव में किस साइट पर इंटरफेस करने की कोशिश कर रहे हैं और कोड वास्तव में अलग-अलग साइट पर निर्भर करता है जिस पर आप वास्तव में स्वचालित करना चाहते हैं। क्या यह खोज इंजन रैंकिंग के लिए सिर्फ कुछ लिंक बिल्डिंग योजना है, या क्या आपको अपनी पोस्ट को साफ करने की आवश्यकता है? – Tim
इसके newocr.com, मैंने देखा है कि मैंने पोस्ट करने से पहले कोड को फिर से कॉन्फ़िगर किया था। खेद है कि मैंने यहां गलत ओसीआर साइट का इस्तेमाल किया था। – Adhil