Dojo 文件上传 C# MVC.NET HttpPost without Uploader
Dojo file upload C# MVC.NET HttpPost without Uploader
我试图用 HTML/JavaScript/C# 代码找到一个很好的示例,以提供有关仅将一个文件上传到服务器以将其保存到服务器上的目录的说明。我的代码在调试时将我的变量 'file' 设为 null。
HTML形式:
<form id="uploadForm" method="post" data-dojo-type="dijit/form/Form" enctype="multipart/form-data">
<input
id="fileUploadInput"
type="file"
name="fileUploadInput"
>
<br />
<br />
<button
id="fileUploadButton"
data-dojo-attach-point="fileUploadButton"
onClick="click"
>
Upload
</button>
</form>
Dojo/JavaScript代码:
ioIframe.send({
url: this.proxyPostFile,
form: "uploadForm",
method: "POST",
handleAs: "text",
// Callback on successful data call:
load: function (response, ioArgs) {
return response;
},
// Callback on errors
error: function (response, ioArgs) {
console.info(response)
}
});
c#代码:
[HttpPost]
public JsonResult Upload(HttpPostedFileBase file)
{
JsonResult FileData = null;
if (Request != null)
{
try
{
if (file!=null && file.ContentLength > 0)
{
... do some stuff with the file
}
}
catch (Exception ex)
{
Dictionary<string,string> error = new Dictionary<string,string>();
error.Add("error", "ERROR:" + ex.Message.ToString());
FileData = Json(error);
}
}
else
{
Dictionary<string,string> callResponse = new Dictionary<string,string>();
callResponse.Add("filename", "You have not specified a file.");
FileData = Json(callResponse);
}
return FileData;
}
如有任何想法或帮助,我们将不胜感激。
谢谢
抱歉,我有点困惑,我不知道您是尝试使用 ajax 还是表单上传文件。如果您使用的是表单,请尝试添加 enctype="multipart/form-data"
属性。希望这有帮助。
看看这个fiddlelink。 Dojo 提供 OOTB 功能来将文件上传到服务器端(你可以传递 url 比如 /test.php
http://jsfiddle.net/kolban/e47YU/
如果您不想通过服务器 url 或者没有服务器,则需要使用 dijit.byId("uploader').upload();
手动上传文件
您使用 name="fileUploadInput"
生成文件输入,但 POST 方法中的参数被命名为 file
- 它们需要匹配以便 [=17= 中的参数] 方法绑定到表单控件的值。
更改输入以匹配参数
<input name="file" ... />
我试图用 HTML/JavaScript/C# 代码找到一个很好的示例,以提供有关仅将一个文件上传到服务器以将其保存到服务器上的目录的说明。我的代码在调试时将我的变量 'file' 设为 null。
HTML形式:
<form id="uploadForm" method="post" data-dojo-type="dijit/form/Form" enctype="multipart/form-data">
<input
id="fileUploadInput"
type="file"
name="fileUploadInput"
>
<br />
<br />
<button
id="fileUploadButton"
data-dojo-attach-point="fileUploadButton"
onClick="click"
>
Upload
</button>
</form>
Dojo/JavaScript代码:
ioIframe.send({
url: this.proxyPostFile,
form: "uploadForm",
method: "POST",
handleAs: "text",
// Callback on successful data call:
load: function (response, ioArgs) {
return response;
},
// Callback on errors
error: function (response, ioArgs) {
console.info(response)
}
});
c#代码:
[HttpPost]
public JsonResult Upload(HttpPostedFileBase file)
{
JsonResult FileData = null;
if (Request != null)
{
try
{
if (file!=null && file.ContentLength > 0)
{
... do some stuff with the file
}
}
catch (Exception ex)
{
Dictionary<string,string> error = new Dictionary<string,string>();
error.Add("error", "ERROR:" + ex.Message.ToString());
FileData = Json(error);
}
}
else
{
Dictionary<string,string> callResponse = new Dictionary<string,string>();
callResponse.Add("filename", "You have not specified a file.");
FileData = Json(callResponse);
}
return FileData;
}
如有任何想法或帮助,我们将不胜感激。
谢谢
抱歉,我有点困惑,我不知道您是尝试使用 ajax 还是表单上传文件。如果您使用的是表单,请尝试添加 enctype="multipart/form-data"
属性。希望这有帮助。
看看这个fiddlelink。 Dojo 提供 OOTB 功能来将文件上传到服务器端(你可以传递 url 比如 /test.php
http://jsfiddle.net/kolban/e47YU/
如果您不想通过服务器 url 或者没有服务器,则需要使用 dijit.byId("uploader').upload();
您使用 name="fileUploadInput"
生成文件输入,但 POST 方法中的参数被命名为 file
- 它们需要匹配以便 [=17= 中的参数] 方法绑定到表单控件的值。
更改输入以匹配参数
<input name="file" ... />