jQuery+Ajax+WebAPIアップロードファイル
8488 ワード
HTML 5ではAjaxでファイルをアップロードできるようになっており、コードは非常に簡単で、
フロントエンドコード:
バックグラウンドコード:
参考記事:HTML 5でjQuery+Ajaxでファイルをアップロード
FormData
クラスでファイルデータを送信することができます.フロントエンドコード:
<p><input type="file" id="upfile">p>
<p><input type="button" id="upJS" value=" JS ">p>
<p><input type="button" id="upJQuery" value=" jQuery ">p>
<script>
// JS
document.getElementById("upJS").onclick = function () {
/* FormData */
var fd = new FormData();
var ajax = new XMLHttpRequest();
fd.append("upload", 1);
/* */
fd.append("upfile", document.getElementById("upfile").files[0]);
ajax.open("post", "/api/Upload", true);
ajax.onload = function () {
console.log(ajax.responseText);
};
ajax.send(fd);
}
// jQuery
$('#upJQuery').on('click', function () {
var fd = new FormData();
fd.append("upload", 1);
fd.append("upfile", $("#upfile").get(0).files[0]);
$.ajax({
url: "/api/Upload",
type: "POST",
processData: false,
contentType: false,
data: fd,
success: function (d) {
console.log(d);
}
});
});
script>
バックグラウンドコード:
using System;
using System.IO;
using System.Web;
using System.Web.Http;
namespace ASP.NET_MVC_study.WepApi
{
public class UploadController : ApiController
{
private string uploadPath = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "Upload/";
///
///
///
/// URL,
public string Post()
{
string result = string.Empty;
string imgPath = string.Empty;
HttpRequest request = System.Web.HttpContext.Current.Request;
HttpFileCollection fileCollection = request.Files;
//
if (fileCollection.Count > 0)
{
//
HttpPostedFile httpPostedFile = fileCollection[0];
//
string fileExtension = Path.GetExtension(httpPostedFile.FileName);
//
string fileName = Guid.NewGuid().ToString() + fileExtension;
//
string filePath = uploadPath + fileName;
//
if (fileExtension.Contains(".jpg")
|| fileExtension.Contains(".png")
|| fileExtension.Contains(".bmp"))
{
//
if (!Directory.Exists(uploadPath))
{
Directory.CreateDirectory(uploadPath);
}
//
while (File.Exists(filePath))
{
fileName = Guid.NewGuid().ToString() + fileExtension;
filePath = uploadPath + fileName;
}
httpPostedFile.SaveAs(filePath);
//
SaveUploadFileInfo(fileName, filePath);
// URL
imgPath = Setting.ServerIP + Setting.PhotoPath + fileName;
result = imgPath;
}
else
{
result = " jpg/png/bmp ";
}
}
else
{
result = " !";
}
return result;
}
}
}
参考記事:HTML 5でjQuery+Ajaxでファイルをアップロード