「https://github.com/ieb/jQueryFileUpload.Net」.Net .ashx バージョンの jQuery File Uploader のハンドラーを .Net プロジェクトに使用しています。それはiframeで来ます。
ファイルアップロードイベントごとに「recordId」と「FieldName」の2つのパラメーターを送信したいと思います。これは可能ですか?
「https://github.com/ieb/jQueryFileUpload.Net」.Net .ashx バージョンの jQuery File Uploader のハンドラーを .Net プロジェクトに使用しています。それはiframeで来ます。
ファイルアップロードイベントごとに「recordId」と「FieldName」の2つのパラメーターを送信したいと思います。これは可能ですか?
これが私の解決策です。
最初にiframeを開くと、既存のファイルを一覧表示するために検索します。
loadFiles = function (id, field) {
// Show uploaded files
$.getJSON($('#fileupload form').prop('action'), { Id: id, Field: field }, function (files) {
var fu = $('#fileupload').data('fileupload');
fu._adjustMaxNumberOfFiles(-files.length);
fu._renderDownload(files)
.appendTo($('#fileupload .files'))
.fadeIn(function () {
// Fix for IE7 and lower:
$(this).show();
});
});
}
上記のように、ソリューションの各レコードにIDとフィールド名を追加して、レコード自体のフォルダーをチェックします。コードビハインドで、これを追加してセッションパラメータを作成します。
protected void Page_Load(object sender, EventArgs e)
{
Session.Add("fuFilePath", "\\");
}
そして最後に、ハンドラーには、レコードのフィールドに対する他のすべての呼び出しのパス情報を取得する制御メカニズムがあります。
public string FILEPATH = "";
public string StorageRoot(HttpContext context)
{
if (context.Session["fuFilePath"] != null)
FILEPATH = context.Session["fuFilePath"].ToString();
else
FILEPATH = ConfigurationManager.AppSettings["StorageRoot"];
Directory.CreateDirectory(FILEPATH);
return FILEPATH;
}
public bool IsReusable { get { return false; } }
public void ProcessRequest (HttpContext context) {
context.Response.AddHeader("Pragma", "no-cache");
context.Response.AddHeader("Cache-Control", "private, no-cache");
if (context.Request.Params["Id"] != null && context.Request.Params["Field"] != null) {
context.Session["fuFilePath"] = ConfigurationManager.AppSettings["StorageRoot"] + context.Request.Params["Id"] + "\\" + context.Request.Params["Field"] + "\\"; ;
}
HandleMethod(context);
}
他のすべての呼び出しでは、最初にセッションパラメータを調べて、レコードのファイルパスを取得します。ユーザーが別のフィールドまたは別のレコードのfileuploadのiframeを開くと、最初に既存のファイルが一覧表示されるため、新しい一覧表示アクティビティが発生するまで、セッションパラメーターは正しいパラメーターに置き換えられます。
それは私にとって最も簡単な方法でした。