2017-12-26 19 views
0

アップロードファイルコントロールを使用してAjaxを呼び出す方法C#ともう1つのパラメータは以下のコードを参照してください。私はこれを達成するのを助けてください。ajaxとc#webメソッドコードを使用してアップロードファイルコントロールを呼び出す

私は

$scope.myData.updateimage = function(item, event) { 

    var data = new FormData(); 

    var files = $("#FileUpload1").get(0).files; 

    // Add the uploaded image content to the form data collection 
    if (files.length > 0) { 
     data.append("UploadedImage", files[0]); 
    } 

    $.ajax({ 
     type: "POST", 
     url: "contentlist.aspx/updateid", 
     data: JSON.stringify({ 
      FileUpload: data, 
      currentid: $scope.currentid 
     }), 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function(msg) { 

     } 
    }); 
} 

C複数のパラメータで画像を更新する#コード

[WebMethod] 
public static string updateid(FileUpload FileUpload1, string currentid) 
{ 

    HttpContext context = HttpContext.Current; 
    string baseUrl = context.Request.Url.Authority + context.Request.ApplicationPath.TrimEnd('/'); 

    if (FileUpload1.HasFile) 
    { 
     try 
     { 
      if (FileUpload1.PostedFile.ContentLength < 3267633) 
      { 
       string strname = FileUpload1.FileName.ToString(); 
       string url = "http://" + baseUrl + "/Images/" + strname; 
       FileUpload1.PostedFile.SaveAs(url); 
       int id = Convert.ToInt16(appVars.updatedid); 
       string Query = "UPDATE SubCategories SET imageurl = WHERE id = " + id; 
       string result = dbAccess.ExecuteOnlyQuery(Query); 
      } 
      else 
      { 


      } 
     } 
     catch (Exception ex) 
     { 

     } 
    } 

    return ""; 
} 

答えて

1

あなたはAJAX呼び出し、提出することを実行することができない場合がありますこれは、入力ファイルの制御が制限されているためです。セキュリティ上の理由から、ブラウザではクライアント側のスクリプトでユーザーのハードドライブからファイルを選択できません。

したがって、既に存在するメカニズムを使用する必要があります:input要素はform要素内になければならず、button要素またはinput-submit要素を使用して送信します。 (例えば入力ファイルのonchangeイベント内、またはカスタムボタンのonclickなど)を実行して、form.submit()を実行してください。

また、JSからファイルコンテンツを取得する方法を見つけることはできません。 Flashコンポーネントを使用してより多くの制御を行うことは可能ですが、それはさらに複雑さと依存性です。そのルートに行くのではなく、入力ファイルコントロールのスタイルを違うように簡単に(ボタンを表示しなくても)簡単にできます。サーバ側では、そのメソッドをHttpPostに調整し、argsを受け入れないでくださいあなたはRequest.Files経由でそれらを見つけなければなりません)。

currentidの値は、おそらくクライアント上でinput-hiddenによって含まれる可能性があり、input-fileと同じように名前を付ける必要があり、form-submitパッケージの一部になります。

私は役立つことを願っています。

関連する問題