Sub PrepareFileToUpload (link As String, Dir As String, FileName As String) As HttpRequest
Dim req As HttpRequest
req.InitializePost2(HttpUtils.EncodeUrl(link), ("file=" & HttpUtils.EncodeUrl(FileName)).GetBytes("UTF8"))
req.SetContentType("application/x-www-form-urlencoded")
OAuth.Sign(req)
Dim authHeader As String
authHeader = OAuth.GetAuthorizationHeaderValue(req)
'write the file
Dim in As InputStream
Dim filesize As Int
Dim stream As OutputStream
in = File.OpenInput(Dir, FileName)
filesize = in.BytesAvailable
If filesize < 4096 Then
stream.InitializeToBytesArray(20)
Else
'Copy! 'Check sdcard space 'Check writable
stream = File.OpenOutput(File.DirDefaultExternal,"temp",False)
End If
Dim EOL As String
EOL = Chr(13) & Chr(10) 'CRLF constant matches Android end of line character which is chr(10).
Dim b() As Byte
b = ("--" & boundary & EOL & "Content-Disposition: form-data; name=" _
& QUOTE & "file" & QUOTE & "; filename=" & QUOTE & FileName & QUOTE _
& EOL & "Content-Type: " & "application/octet-stream" & EOL & _
"Content-Transfer-Encoding: binary" & EOL & EOL).GetBytes("UTF8")
stream.WriteBytes(b, 0, b.Length)
File.Copy2(in, stream) 'read the file and write it to the stream
b = EOL.GetBytes("UTF8")
stream.WriteBytes(b, 0, b.Length)
b = (EOL & "--" & boundary & "--" & EOL).GetBytes("UTF8")
stream.WriteBytes(b, 0, b.Length)
Dim in As InputStream
If filesize < 4096 Then
b = stream.ToBytesArray
in.InitializeFromBytesArray(b,0,b.Length)
Else
stream.Flush
stream.Close
in = File.OpenInput(File.DirDefaultExternal,"temp")
End If
UploadLength = in.BytesAvailable
PostInputStream.Initialize(in)
Dim req As HttpRequest
'req.InitializePost2(link, b)
'req.InitializePost(HttpUtils.EncodeUrl(link), PostInputStream,b.Length)
req.InitializePost(HttpUtils.EncodeUrl(link), PostInputStream,in.BytesAvailable )
req.SetContentType("multipart/form-data; boundary=" & boundary)
req.SetContentEncoding("UTF8")
req.SetHeader("Authorization", authHeader)
Return req
End Sub