Я использую uploadify
в своем проекте MVC3. Он отлично работает для загрузки нескольких файлов и сохранения в папки.
Как передать путь загруженного файла в действие контроллера? -- Мне нужно передать его действию ExtractingZip
моего контроллера.
Чтобы извлечь содержимое файла .zip
, я использую библиотеку DotNetZip.
Вот что я пробовал до сих пор.
$('#file_upload').uploadify({
'checkExisting': 'Content/uploadify/check-exists.php',
'swf': '/Content/uploadify/uploadify.swf',
'uploader': '/Home/Index',
'auto': false,
'buttonText': 'Browse',
'fileTypeExts': '*.jpg;*.jpeg;*.png;*.gif;*.zip',
'removeCompleted': false,
'onSelect': function (file) {
if (file.type == ".zip") {
debugger;
$.ajax({
type: 'POST',
dataType: 'json',
url: '@Url.Action("ExtractingZip", "Home")',
data: ({ fileName: file.name}), // I dont see a file.path to pass it to controller
success: function (result) {
alert('Success');
},
error: function (result) {
alert('error');
}
});
}
}
});
Вот мое действие контроллера:
[HttpPost]
public ActionResult ExtractingZip(string fileName,string filePath, HttpPostedFileBase fileData)
{
string zipToUnpack = @"C:\Users\Public\Pictures\Sample Pictures\images.zip";// I'm unable to get the filePath so i'm using the path.
string unpackDirectory = System.IO.Path.GetTempPath();
using (ZipFile zip1 = ZipFile.Read(zipToUnpack))
{
// here, we extract every entry, but we could extract conditionally
// based on entry name, size, date, checkbox status, etc.
var collections = zip1.SelectEntries("name=*.jpg;*.jpeg;*.png;*.gif;");
foreach (var item in collections)
{
item.Extract(unpackDirectory, ExtractExistingFileAction.OverwriteSilently);
}
}
return Json(true);
}
[HttpPost]
public ActionResult Index(IEnumerable<HttpPostedFileBase> fileData)
{
foreach (var file in fileData)
{
if (file.ContentLength > 0)
{
string currpath;
currpath = Path.Combine(Server.MapPath("~/Images/User3"), file.FileName);
//save to a physical location
file.SaveAs(currpath);
}
}
}
onSelect
в uploadify, я могу прочитать данные файла .zip с помощью HttpPostedFileBase. - person Karthik Chintala   schedule 17.12.2012onSelect
и когда я помещаю отладчик вIndex
, он срабатывает при загрузке файла, и я также могу видеть данные и сохранять их. - person Karthik Chintala   schedule 17.12.2012images
, вот в чем причина использованияonSelect
в uploadify. - person Karthik Chintala   schedule 17.12.2012fileData.InputStream
в IntelliSense. - person Karthik Chintala   schedule 18.12.2012HttpPostedFileBase
, и при отладке он равен нулю. Если я не укажуonSelect
, я увижу, что fileData не равен нулю. Если я передам через $.ajax fileData будет нулевым - person Karthik Chintala   schedule 18.12.2012.zip
, он должен автоматически выдать мне все файлы изображений в файле.zip
. Итак, если я использую onSelect, я могу отсортировать все файлы изображений в zip-файле. Я не понимаю, какой параметр передать действию контроллера, чтобы я мог получить желаемое - person Karthik Chintala   schedule 18.12.2012