Я пытался plupload и загрузка файла jquery
Загрузка файла Jquery работала лучше всего, так как plupload перепутался с отправкой формы, и я не смог получить маркер защиты от подделкиработать (пока!).
Вы также можете рассмотреть возможность загрузки, но я сам не пробовал.
Библиотека telerik бесплатна только для определенных проектов, таких как открытый исходный код / некоммерческий.
Вот код, который я собрал для использования при загрузке файла jQuery ...
@section Header
{
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/themes/base/jquery-ui.css"
id="theme" />
<link href="/Content/plugins/jqUpload/files/jquery.fileupload-ui.css" rel="stylesheet"
type="text/css" />
<link href="/Content/plugins/jqUpload/style.css" rel="stylesheet" type="text/css" />
}
<div id="fileupload" class="grid_24">
@using (@Html.BeginForm("Upload", "Photo", new { Model.Id }, FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@Html.AntiForgeryToken()
<div class="fileupload-buttonbar">
<label class="fileinput-button">
<span>Add files...</span>
<input type="file" name="files" multiple="multiple" />
</label>
<button type="submit" class="start">
Start upload</button>
<button type="reset" class="cancel">
Cancel upload</button>
<button type="button" class="delete">
Delete files</button>
</div>
}
<div class="fileupload-content">
<table class="files">
</table>
<div class="fileupload-progressbar">
</div>
</div>
</div>
<div class="clear"></div>
<script id="template-upload" type="text/x-jquery-tmpl">
<tr class="template-upload{{if error}} ui-state-error{{/if}}">
<td class="preview"></td>
<td class="name">${name}</td>
<td class="size">${sizef}</td>
{{if error}}
<td class="error" colspan="2">Error:
{{if error === 'maxFileSize'}}File is too big
{{else error === 'minFileSize'}}File is too small
{{else error === 'acceptFileTypes'}}Filetype not allowed
{{else error === 'maxNumberOfFiles'}}Max number of files exceeded
{{else}}${error}
{{/if}}
</td>
{{else}}
<td class="progress"><div></div></td>
<td class="start"><button>Start</button></td>
{{/if}}
<td class="cancel"><button>Cancel</button></td>
</tr>
</script>
<script id="template-download" type="text/x-jquery-tmpl">
<tr class="template-download{{if error}} ui-state-error{{/if}}">
{{if error}}
<td></td>
<td class="name">${name}</td>
<td class="size">${sizef}</td>
<td class="error" colspan="2">Error:
{{if error === 1}}File exceeds upload_max_filesize (php.ini directive)
{{else error === 2}}File exceeds MAX_FILE_SIZE (HTML form directive)
{{else error === 3}}File was only partially uploaded
{{else error === 4}}No File was uploaded
{{else error === 5}}Missing a temporary folder
{{else error === 6}}Failed to write file to disk
{{else error === 7}}File upload stopped by extension
{{else error === 'maxFileSize'}}File is too big
{{else error === 'minFileSize'}}File is too small
{{else error === 'acceptFileTypes'}}Filetype not allowed
{{else error === 'maxNumberOfFiles'}}Max number of files exceeded
{{else error === 'uploadedBytes'}}Uploaded bytes exceed file size
{{else error === 'emptyResult'}}Empty file upload result
{{else}}${error}
{{/if}}
</td>
{{else}}
<td class="preview">
{{if thumbnail_url}}
<a href="${url}" target="_blank"><img src="${thumbnail_url}"></a>
{{/if}}
</td>
<td class="name">
<a href="${url}"{{if thumbnail_url}} target="_blank"{{/if}}>${name}</a>
</td>
<td class="size">${sizef}</td>
<td colspan="2"></td>
{{/if}}
<td class="delete">
<button data-type="${delete_type}" data-url="${delete_url}">Delete</button>
</td>
</tr>
</script>
@section Scripts
{
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js"></script>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.templates/beta1/jquery.tmpl.min.js"></script>
<script src="/Content/plugins/jqUpload/files/jquery.iframe-transport.js" type="text/javascript"></script>
<script type="text/javascript" src="/Content/plugins/jqUpload/files/jquery.iframe-transport.js"></script>
<script type="text/javascript" src="/Content/plugins/jqUpload/files/jquery.fileupload.js"></script>
<script type="text/javascript" src="/Content/plugins/jqUpload/files/jquery.fileupload-ui.js"></script>
<script src="/Content/plugins/jqUpload/application.js" type="text/javascript"></script>
}
и контроллера ...
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Upload(int? id, IEnumerable<HttpPostedFileBase> files)
{
foreach (var file in files)
{
if (file.ContentLength > 0)
{
var fileName = id + "_" + Path.GetFileName(file.FileName);
var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
file.SaveAs(path);
}
}
return Json(new {name = fileName, type = "image/jpeg"});
}