2017-02-05 4 views
0

私はwebcam.jsを使用してasp.net Webフォームアプリケーションを使用してウェブカメラから写真を取得しています。問題は、 "ID"クエリ文字列に基づいてファイル名を取得したいということです。しかし、私が「シュート」ボタンをクリックするたびに、クエリーストリングの値は何もありません。ポストバック後のクエリーストリングに値がありません

は、ここに私の完全なHTMLです:

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Coba.aspx.vb" Inherits="myWebcam.Coba" %> 

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
    <script src='<%=ResolveUrl("~/Plugin/jquery.webcam.js")%>' type="text/javascript"></script> 
    <script type="text/javascript"> 
     var pageUrl = '<%=ResolveUrl("~/Coba.aspx")%>'; 
     $(function(){ 
      $("#Camera").webcam({ 
       width: 320, 
       height: 240, 
       mode: "save", 
       swffile: '<%=ResolveUrl("Plugin/jscam.swf")%>', 
       onTick: function() { }, 
       onSave: function() { 
       }, 
       onCapture: function() { 
        webcam.save(pageUrl); 
       }, 
       debug: function() { }, 
       onLoad: function() { } 
      }); 
     }); 

     function Capture() { 

      webcam.capture(); 

      return false; 
     }; 
    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 

    <div> 
    <h2>Index</h2> 

    <input type="button" value="Shoot!" onclick="Capture()" /> 
    <div id="Camera"></div> 
    </div> 
    </form> 
</body> 
</html> 

そして、ここに私のasp.net分離コードです:

Imports System.IO 
Imports System.Web.Services 

Public Class Coba 
    Inherits System.Web.UI.Page 
    Public sID As String 

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
     sID = Request.QueryString("id") 


     If Not Page.IsPostBack Then 

      Capture(Trim(sID)) 
     End If 
    End Sub 
    Public Sub Capture(ByVal mID As String) 
     Dim stream = Request.InputStream 
     Dim dump As String 

     If stream.Length > 0 Then 

      Using reader = New StreamReader(stream) 
       dump = reader.ReadToEnd() 
      End Using 

      Dim path = Server.MapPath("~/" & Trim(mID) & ".jpg") 
      System.IO.File.WriteAllBytes(path, String_To_Bytes2(dump)) 
     End If 
    End Sub 

    Private Function String_To_Bytes2(strInput As String) As Byte() 
     Dim numBytes As Integer = (strInput.Length)/2 
     Dim bytes As Byte() = New Byte(numBytes - 1) {} 

     For x As Integer = 0 To numBytes - 1 
      bytes(x) = Convert.ToByte(strInput.Substring(x * 2, 2), 16) 
     Next 

     Return bytes 
    End Function 
End Class 

私がページを初めて実行、私はからの "ID" の値を取得することができますクエリ文字列。シュートボタンがポストバックをトリガーし、 "キャプチャー"サブを実行しますが、 "ID"クエリーストリングは何も返しません。

この問題の解決策はありますか?

+0

私はあなたのコードを正しく読んでいるなら、あなたは後の 'POST'backのために元の' queryString'データを保持していません。 'ViewState'などを使って、' hidden'フィールドを設定することから、 'POST'backか' GET'かのように_subsequent_リクエストで(再び)送ることができます。 )。 – EdSF

答えて

1

コードを試しましたが、間違いがあると思います。プラグインはQueryStringを追加していないようです。あなたのIDは常に何もありません。私はデバッグを行い、QueryStringに追加IDのトレースがないことを発見しました。

ファイル名は、ロジックに自分自身を割り当てる属性です。 Here is a complete example in which the ID is not recovered.

official page of the pluginでも、クエリーストリングを通してIDへの参照はありません。


他のものは、インターフェイスと保存プロセスに同じページを使用しないでください。 Pageloadは常に呼び出され、インターフェイスをロードする場合でもCapture(Trim(sID))と呼び出します。私はあなたがこの行を変更しなければならないと思います

var pageUrl = '<%=ResolveUrl("~/Coba_SaveImage.aspx")%>'; 

そして、すべてのあなたの分離コードで

var pageUrl = '<%=ResolveUrl("~/Coba.aspx")%>'; 

はページCoba_SaveImage.aspxに行きます。ページロードでは、If Not Page.IsPostBack Thenは常にポストバックです。

ご希望の場合はこちらをご覧ください。

+0

ありがとうございます。これは機能します。 – Robert

関連する問題