2011-09-06 47 views
0

我想使用VB.Net上传文件到Sinatra Web服务,我不知道如何配置任何一端。当我运行VB.Net应用程序,西纳特拉总是用代码404响应下面是VB.Net代码,这是我从另一个SO后转换:试图使用vb.net上传文件到sinatra

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    Dim responseData As String = "" 
    Dim rdr As FileStream = New FileStream("X:\QueryTxtFiles\Query\CDA Curncy_9_1_2011.fqy", FileMode.Open) 
    Dim req As HttpWebRequest = DirectCast(WebRequest.Create("http://finqueryserver:9898"), HttpWebRequest) 
    req.Method = "POST" ' you might use "POST" 
    req.ContentLength = rdr.Length 
    req.AllowWriteStreamBuffering = True 

    Dim reqStream = DirectCast(req.GetRequestStream(), Stream) 

    Dim inData(rdr.Length) As Byte 

    ' Get data from upload file to inData 
    Dim bytesRead As Integer = rdr.Read(inData, 0, rdr.Length) 

    ' put data into request stream 
    reqStream.Write(inData, 0, rdr.Length) 

    rdr.Close() 
    Try 
     req.GetResponse() 
    Catch ex As Exception 
     responseData = "An error occurred: " & ex.Message 
    End Try 

    ' after uploading close stream 
    reqStream.Close() 
End Sub 

这里是西纳特拉代码:

require 'rubygems' 
require 'sinatra' 

post '/:name/:filename' do 
puts "got here" 

    begin 
    name = params[:name] 
    rescue 
    name = "no name" 
    end 
    begin 
    filename = params[:filename] 
    rescue 
    filename = "no filename" 
    end 
end 

(我从来没有看到“来到这里”。)Sinatra代码是基于使用cURL的教程,我不是。我也试着

post "/:filename' 

这给404也和简单

post "/" 

这确实显示“来到这里”,但显然是无用的,因为我需要处理的文件。

很明显,我是两个新手,这不可能很难,但我不知道该怎么做。

谢谢。

回答

0

好的,对于后代来说,这是我做的工作。在vb.net代码,我用:

qry_results = wc.UploadFile("http://192.168.9.81:9898/execfqy", "X:\QueryTxtFiles\Query\CDA Curncy_9_1_2011.fqy") 

,并在西纳特拉文件:

post '/execfqy' do 
qry_file.write(params[:file][:tempfile].readlines)