В нынешнем виде мой код работает с HTML5 и Silverlight. Однако, когда я использую Flash или HTML4, форма загрузки останавливается. И когда я проверяю загруженный каталог, загружается только первый файл.
Вот мой javascript для одного из загрузчиков:
$("#origShapeUploader").pluploadQueue({
runtimes: 'flash,html4',
url: 'upload.aspx?originals=yes', //with a query string of yes, the files being uploaded won't be given a prefix of 'MOD'
max_file_count: maxfiles,
filters: [
{ title: "Shape files", extensions: "shp,dbf,prj,shx"} //these are the only file types allowed
],
multi_selection: true,
flash_swf_url: '/javascript/plupload.flash.swf', //in case silverlight and html5 support doesn't exist
silverlight_xap_url: '/javascript/plupload.silverlight.xap', //silverlight browser extension
});
Для меня это кричащая проблема обработчика на стороне сервера, поэтому вот мой код для обработки загрузки, префикс MOD используется в другой части моей программы.
if (Request.Files.Count > 0)
{
int chunk = Request["chunk"] != null ? int.Parse(Request["chunk"]) : 0;
string fileName = Request["name"] != null ? Request["name"] : string.Empty;
HttpPostedFile fileUpload = Request.Files[0];
var uploadPath = Server.MapPath("~/uploaded-files");
if (Request.QueryString["originals"] == "yes")
{
using (var fs = new FileStream(Path.Combine(uploadPath, fileName), chunk == 0 ? FileMode.Create : FileMode.Append))
{
var buffer = new byte[fileUpload.InputStream.Length];
fileUpload.InputStream.Read(buffer, 0, buffer.Length);
fs.Write(buffer, 0, buffer.Length);
}
}
else
{
using (var fs = new FileStream(Path.Combine(uploadPath, "MOD" + fileName), chunk == 0 ? FileMode.Create : FileMode.Append))
{
var buffer = new byte[fileUpload.InputStream.Length];
fileUpload.InputStream.Read(buffer, 0, buffer.Length);
fs.Write(buffer, 0, buffer.Length);
}
}
}