在通用处理程序中更改图片的文件名
Change filename of picture in generic handler
我有一个通用处理程序,它被设置为从 ipad 运行 html5 和 javascript.
接收图片
所有代码都从前到后工作,短一件事。
图片在通用处理程序中处理后,我需要更改图片的文件名。
这是我的按钮点击代码 -
function sendPic() {
checkNetwork();
var myInput = document.getElementById('myFileInput');
var file = myInput.files[0];
var formData = new FormData();
formData.append('file', $('#myFileInput')[0].files[0]);
$.ajax({
type: 'post',
url: domainLocation + 'saveimage.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!");
}
});
}
这是通用处理程序代码 -
public void ProcessRequest(HttpContext context)
{
string fname;
if (context.Request.Files.Count > 0)
{
HttpFileCollection files = context.Request.Files;
for (int i = 0; i < files.Count; i++)
{
HttpPostedFile file = files[i];
if (HttpContext.Current.Request.Browser.Browser.ToUpper() == "IE" || HttpContext.Current.Request.Browser.Browser.ToUpper() == "INTERNETEXPLORER")
{
string[] testfiles = file.FileName.Split(new char[] { '\' });
fname = testfiles[testfiles.Length - 1];
}
else
{
fname = file.FileName;
}
file.SaveAs(@"\fdsvr\mwfphotos\" + fname);
context.Response.ContentType = "text/plain";
context.Response.Write(fname);
}
}
}
我正在考虑在 ajax 调用中做数据块
data: {
"fileName" : fileName,
"formData" : formData
},
这个方向似乎落在处理程序上 - 试图从上下文中获取 formData 和文件名。
我的方向对吗?我没有在 ajax 调用中正确设置数据负载吗?一旦在处理程序中,我如何将 formData 带出上下文并在其中使用它?
谢谢
虽然我已经将 JavaScript 与 AJAX 和 PHP 一起使用来实现类似的功能,但我认为 link on the Mozilla Developer Network 可以帮助您构建应用程序。
这里建议为 formData.append
提供第三个参数,例如 formData.append('userpic', myFileInput.files[0], 'chris.jpg'); 以提供特定文件名。
我有一个通用处理程序,它被设置为从 ipad 运行 html5 和 javascript.
接收图片所有代码都从前到后工作,短一件事。
图片在通用处理程序中处理后,我需要更改图片的文件名。
这是我的按钮点击代码 -
function sendPic() {
checkNetwork();
var myInput = document.getElementById('myFileInput');
var file = myInput.files[0];
var formData = new FormData();
formData.append('file', $('#myFileInput')[0].files[0]);
$.ajax({
type: 'post',
url: domainLocation + 'saveimage.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!");
}
});
}
这是通用处理程序代码 -
public void ProcessRequest(HttpContext context)
{
string fname;
if (context.Request.Files.Count > 0)
{
HttpFileCollection files = context.Request.Files;
for (int i = 0; i < files.Count; i++)
{
HttpPostedFile file = files[i];
if (HttpContext.Current.Request.Browser.Browser.ToUpper() == "IE" || HttpContext.Current.Request.Browser.Browser.ToUpper() == "INTERNETEXPLORER")
{
string[] testfiles = file.FileName.Split(new char[] { '\' });
fname = testfiles[testfiles.Length - 1];
}
else
{
fname = file.FileName;
}
file.SaveAs(@"\fdsvr\mwfphotos\" + fname);
context.Response.ContentType = "text/plain";
context.Response.Write(fname);
}
}
}
我正在考虑在 ajax 调用中做数据块
data: {
"fileName" : fileName,
"formData" : formData
},
这个方向似乎落在处理程序上 - 试图从上下文中获取 formData 和文件名。
我的方向对吗?我没有在 ajax 调用中正确设置数据负载吗?一旦在处理程序中,我如何将 formData 带出上下文并在其中使用它?
谢谢
虽然我已经将 JavaScript 与 AJAX 和 PHP 一起使用来实现类似的功能,但我认为 link on the Mozilla Developer Network 可以帮助您构建应用程序。
这里建议为 formData.append
提供第三个参数,例如 formData.append('userpic', myFileInput.files[0], 'chris.jpg'); 以提供特定文件名。