附件上传功能-01
1、前台页面
1 <div class="input-group" style="width:100%"> 2 <input type="file" id="file" name="myfile" class="form-control" /> 3 <span class="input-group-btn"> 4 <button id="btn-fileUpload" class="btn btn-success" type="button">上传</button> 5 </span> 6 </div> 7 <div style="display:none;" id="div-progress"><progress id="progressBar" value="0" max="100"></progress><span id="percentage"></span></div>
css样式基于
Bootstrap v3.3.7 (http://getbootstrap.com)
2、JavaScript Code
$("#btn-fileUpload").on('click', function () {
var fileObj = document.getElementById("file").files[0]; // js 获取文件对象
var FileController = settings.apiUrl + "/Version/UploadFile"; // 接收上传文件的后台地址
// FormData 对象
var form = new FormData();
// form.append("author", "hooyes"); // 可以增加表单数据
form.append("file", fileObj); // 文件对象
// XMLHttpRequest 对象
var xhr = new XMLHttpRequest();
xhr.open("post", FileController, true);
xhr.onload = function (result) {
var response = $.parseJSON(result.target.response);
$("#hidPathUrl").val("/Upload/Version/" + response.context);
tincher.message(response.message);
};
xhr.upload.addEventListener("progress", function (evt) {
$("#div-progress").show();
var progressBar = document.getElementById("progressBar");
var percentageDiv = document.getElementById("percentage");
if (evt.lengthComputable) {
progressBar.max = evt.total;
progressBar.value = evt.loaded;
percentageDiv.innerHTML = Math.round(evt.loaded / evt.total * 100) + "%";
}
}, false);
xhr.send(form);
});
3、C# API
/// <summary>
/// 数据包、app应用安装包上传
/// </summary>
/// <param name="imageid">categroy由前端传过来</param>
/// <returns></returns>
[AllowAnonymousAttribute]//允许所有请求
[HttpPost]
[Route("api/Version/UploadFile")]
public HttpResponseMessage UploadFile()
{
try
{
HttpRequest request = System.Web.HttpContext.Current.Request;
HttpFileCollection fileCollection = request.Files;
if (fileCollection.Count > 0)
{
//获取WebApi项目根目录指定的文件夹(记住要给IUSER完全的控制权限,这样IIS才能把文件写到那个文件夹)
string uploadFolderPath = System.Web.Hosting.HostingEnvironment.MapPath("~/Upload/Version/");
//如果路径不存在,创建路径
if (!Directory.Exists(uploadFolderPath))
Directory.CreateDirectory(uploadFolderPath);
// 获取文件
HttpPostedFile httpPostedFile = fileCollection[0];
string fileExtension = Path.GetExtension(httpPostedFile.FileName);// 文件扩展名
string fileName = httpPostedFile.FileName;// 名称
if (fileName.Contains("\\"))
{
var arr = fileName.Split(new string[] { "\\" }, StringSplitOptions.RemoveEmptyEntries);
fileName = arr[arr.Length - 1];
};
var exts = fileName.Split(new string[] { "." }, StringSplitOptions.RemoveEmptyEntries);
var ext = exts[exts.Length - 1];
var strs = new string[] { "apk", "zip" };
if (!strs.Contains(ext))
{
return Error(0, "上传失败", "只允许上传apk、zip格式文件");
}
string filePath = uploadFolderPath + fileName;// 上传路径
httpPostedFile.SaveAs(filePath);
return Success(1, "上传成功", fileName);
}
else
{
return Error(0, "上传失败", null);
}
}
catch (Exception ex)
{
LogManager.GetInstance("txt").Error("上传异常->" + ex.Message);
return Error(0, "发生异常", ex.Message);
}
}
得即高歌失即休,多愁多恨亦悠悠。今朝有酒今朝醉,明日愁来明日愁

浙公网安备 33010602011771号