私はaspアップローダーを持っており、ユーザーが画像をアップロードすると表示されますが、ユーザーは画像を削除できますが、Request.Filesから削除されないため、画像がアップロードされます。JavaScriptのRequest.Filesから削除するにはどうすればよいですか?
StepOne.aspx:http ://pastebin.com/EUCX783r StepOne.aspx.cs :http: //pastebin.com/aZ3UtV2F
私はaspアップローダーを持っており、ユーザーが画像をアップロードすると表示されますが、ユーザーは画像を削除できますが、Request.Filesから削除されないため、画像がアップロードされます。JavaScriptのRequest.Filesから削除するにはどうすればよいですか?
StepOne.aspx:http ://pastebin.com/EUCX783r StepOne.aspx.cs :http: //pastebin.com/aZ3UtV2F
読み取り専用であるため、FileListからファイルを直接削除することはできません。「」に設定すると、Filesコレクション内のすべてのファイルを削除できます。
document.getElementById('files').value = ""; //Removes all files in the input
ただし、これは個々のファイルでは機能しません。
推奨される回避策
フォーム内に非表示の入力要素を含め、この非表示の入力内で削除のマークが付けられているファイルを監視することで、これを処理できる可能性があります。
<input id='filesToDelete' name='filesToDelete' runat='server' type='hidden' />
削除を実行すると(Javascriptの使用を想定)、ファイルの名前をfilesToDeleteフィールドに追加できます(コンマで区切られます)。
//Within your delete Javascript method
document.getElementById('filesToDelete').value += (yourImg.title + ",");
アップロードがサーバーに投稿されるときに、ファイルのリストに含まれていないもののみをアップロードするように指定できます。カンマ区切りの値をコレクションに格納するだけです。必要に応じて、LINQを使用してコレクションを確認し、投稿されたファイルと比較します。
protected void YourUploadButton_Click(object sender, EventArgs e)
{
//Get files to be deleted
string[] filesToDelete = this.filesToDelete.Value.Split(',');
//Your collection of files
HttpFileCollection uploadFiles = Request.Files;
for (int i = 0; i < uploadFiles.Count; i++)
{
//Checks the Posted File
HttpPostedFile postedFile = uploadFiles[i];
//If it isn't a file meant for deletion - don't upload
if (!filesToDelete.Any(c => c == postedFile.FileName))
{
UploadToFTP(postedFile, i);
}
}
}
コードビハインドページの上部にLINQへの参照を含める必要があります。
using System.Linq;
たぶん私は間違っているかもしれませんが、あなたのコードをチェックすることによって、画像のHTMLタグを削除するコードを見つけただけで、FileListからファイルを削除するコードを見ることができません。それが理由だと思います