Я пытаюсь сделать функцию распознавания голоса голосом Google api.Файл постоянно используется моим кодом и не может быть удален вручную или кодом
Я модифицировал функцию UPLOADFILEEX, которую можно найти на CodeProject ...
Файл Я хочу удалить это C: \ record.flac
Вот функция ниже
Public Shared Function UploadFile(ByVal uploadfilename As String, ByVal url As String, ByVal fileFormName As String, ByVal contenttype As String, ByVal querystring As System.Collections.Specialized.NameValueCollection, ByVal cookies As CookieContainer) As String
If (fileFormName Is Nothing) OrElse (fileFormName.Length = 0) Then
fileFormName = "file"
End If
If (contenttype Is Nothing) OrElse (contenttype.Length = 0) Then
contenttype = "application/octet-stream"
End If
Dim postdata As String
postdata = "?"
If Not (querystring Is Nothing) Then
For Each key As String In querystring.Keys
postdata += key + "=" + querystring.Get(key) + "&"
Next
End If
Dim uri As Uri = New Uri(url + postdata)
Dim boundary As String = "----------" + DateTime.Now.Ticks.ToString("x")
Dim webrequest As HttpWebRequest = CType(Net.WebRequest.Create(uri), HttpWebRequest)
webrequest.CookieContainer = cookies
webrequest.ContentType = "audio/x-flac; rate=16000"
webrequest.Method = "POST"
Dim sb As StringBuilder = New StringBuilder
sb.Append("--")
sb.Append(boundary)
sb.Append("" & Microsoft.VisualBasic.Chr(13) & "" & Microsoft.VisualBasic.Chr(10) & "")
sb.Append("Content-Disposition: form-data; name=""")
sb.Append(fileFormName)
sb.Append("""; filename=""")
sb.Append(IO.Path.GetFileName(uploadfilename))
sb.Append("""")
sb.Append("" & Microsoft.VisualBasic.Chr(13) & "" & Microsoft.VisualBasic.Chr(10) & "")
sb.Append("Content-Type: ")
sb.Append(contenttype)
sb.Append("" & Microsoft.VisualBasic.Chr(13) & "" & Microsoft.VisualBasic.Chr(10) & "")
sb.Append("" & Microsoft.VisualBasic.Chr(13) & "" & Microsoft.VisualBasic.Chr(10) & "")
Dim postHeader As String = sb.ToString
Dim postHeaderBytes As Byte() = Encoding.UTF8.GetBytes(postHeader)
Dim boundaryBytes As Byte() = Encoding.ASCII.GetBytes("" & Microsoft.VisualBasic.Chr(13) & "" & Microsoft.VisualBasic.Chr(10) & "--" + boundary + "" & Microsoft.VisualBasic.Chr(13) & "" & Microsoft.VisualBasic.Chr(10) & "")
Dim fileStreama As FileStream = New FileStream(uploadfilename, FileMode.Open, FileAccess.Read)
Dim length As Long = postHeaderBytes.Length + fileStreama.Length + boundaryBytes.Length
webrequest.ContentLength = length
Dim requestStream As Stream = webrequest.GetRequestStream
requestStream.Write(postHeaderBytes, 0, postHeaderBytes.Length)
Dim sendBuffer(Math.Min(4096, fileStreama.Length)) As Byte
Dim bytesRead As Integer = 0
Do
bytesRead = fileStreama.Read(sendBuffer, 0, sendBuffer.Length)
If bytesRead = 0 Then Exit Do
requestStream.Write(sendBuffer, 0, bytesRead)
Loop
requestStream.Write(boundaryBytes, 0, boundaryBytes.Length)
Dim responce As WebResponse = webrequest.GetResponse
Dim s As Stream = responce.GetResponseStream
Dim sr As StreamReader = New StreamReader(s)
Return sr.ReadToEnd
sr.Dispose()
s.Dispose()
fileStreama.Dispose()
requestStream.Dispose()
webrequest.Abort()
responce.Close()
End Function
Функция WORKS (Thankgod), но всякий раз, когда я хочу очистить (т. Е. Удалить аудиофайл, который находится в c :), он просто зависает и ничего не происходит ...
Вот мой код, который выполняется на событие FormClosing ....
Private Sub Form1_Close(sender As System.Object, e As System.EventArgs) Handles MyBase.FormClosing
Dim di As New IO.DirectoryInfo("c:\")
Dim diar1 As IO.FileInfo() = di.GetFiles()
Dim dra As IO.FileInfo
For Each dra In diar1
If dra.Name.Contains("record.") Then
dra.Delete()
End If
Next
End Sub
Как вы, вероятно, может быть в состоянии видеть из функции Я попытался удалить все ПОТОКИ И БЛИЗКИЕ К НИМ ФАЙЛА НЕ БЫТИЯ ACCESSED
Но он все еще зависает, и когда я пытаюсь вручную удалить его ... он говорит мне, что он используется другим процессом (который является моей программой) - (я использую ffmpeg для преобразования .wav в .flac-файл, но что не вызывает никаких проблем) ....
Что я делаю неправильно ...
Я пропустил закрытие какого-то потока или что-то в этом роде.
Кстати uploadfilename струнной C: \ record.flac (только для информации - я не думаю, что это поможет)
Спасибо, сработало! Не могу поверить, что раньше не думал об этом! –
@ImranAhmed - Я удивлен, что вы не получили предупреждение компилятора о недостижимом коде! Является ли вариант строгим? –