私が取り組んでいるプロジェクトのHttpHandlerを作成しました。ハンドラはHTMLフォームからイメージを受け取ります。データはJQUERY/AJAXを介して送信されます。私は同じ呼び出しからフォームデータの残りを受け取ることができるかどうか疑問に思っていました。この例では、ファイルセレクタとテキストボックスの2つの入力があります。私はテキストボックスの中の何も読んでみたい。フォームに送信するときにテキストボックスデータを取得することは可能ですか、それとも個別に行う必要がありますか?.netとjquery/ajaxを使用して画像をアップロードしているときにフォームデータを読む
のjavascript:
function sendFile(file) {
var formData = new FormData();
formData.append('file', $('#f_UploadImage')[0].files[0]);
$.ajax({
type: 'post',
url: 'fileUploader.ashx',
data: formData,
success: function (status) {
if (status != 'error') {
var my_path = "MediaUploader/" + status;
$("#myUploadedImg").attr("src", my_path);
}
},
processData: false,
contentType: false,
error: function() {
alert("Whoops something went wrong!");
}
});
}
ASPハンドラコード:
using System;
using System.Web;
using System.IO;
public class fileUploader : IHttpHandler {
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
try
{
string dirFullPath = HttpContext.Current.Server.MapPath("~/MediaUploader/");
string[] files;
int numFiles;
files = System.IO.Directory.GetFiles(dirFullPath);
numFiles = files.Length;
numFiles = numFiles + 1;
string str_image = "";
foreach (string s in context.Request.Files)
{
HttpPostedFile file = context.Request.Files[s];
string fileName = file.FileName;
string fileExtension = file.ContentType;
if (!string.IsNullOrEmpty(fileName))
{
fileExtension = Path.GetExtension(fileName);
str_image = "MyPHOTO_" + numFiles.ToString() + fileExtension;
string pathToSave_100 = HttpContext.Current.Server.MapPath("~/MediaUploader/") + str_image;
file.SaveAs(pathToSave_100);
}
}
// database record update logic here ()
context.Response.Write(str_image);
}
catch (Exception ac)
{
}
}
public bool IsReusable {
get {
return false;
}
}
}
HTML:
<input type="text" id=f_input>
<input type="file" class="upload" id="f_UploadImage">