Kendo 分块上传不分割上传的文件
Kendo chunk upload not split the uploaded file
我是使用kendoUpload
控件的新手(KendoUIv2014.3.1316),带有chunk
上传选项.我有一个网络应用程序,使用 kendoupload
控件上传文件,它需要分块上传功能,因为有机会上传更大的文件。请在下面查看我的代码。
Html
<input name="upload" id="mediaflUpload" type="file" />
.js
$("#mediaflUpload").kendoUpload({
async: {
chunkSize: 5000000, // Will separate the file into chunks of size 5000000 bytes.
concurrent: true, // Will upload all files simultaneously.
autoRetryAfter: 300, // Will attempt a failed chunk upload after 300ms.
maxAutoRetries: 4, // Will attempt the same failed chunk upload 4 times.
saveUrl: "/File/ChunkSave",
removeUrl: "/File/Remove",
autoUpload: true
},
multiple: false,
success: OnSuccessMediaFileUpload,
upload: OnUploadMediaFileUpload,
error: OnErrorMediaFileUpload
});
function OnUploadMediaFileUpload(e) {
debugger;
//var data = result.response;
var chunkMetaData = {
UploadUid: "mediaflUpload",
FileName: '',
ContentType: '',
ChunkIndex: 1,
TotalChunks: 1,
TotalFileSize: 30000000
};
e.data = {
metaData: JSON.stringify(chunkMetaData)
};
}
控制器
public ActionResult ChunkSave(IEnumerable<HttpPostedFileBase> files, string metaData)
{
if (metaData == null) {
return Save(files);
}
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(metaData));
var serializer = new DataContractJsonSerializer(typeof(ChunkMetaData));
ChunkMetaData somemetaData = serializer.ReadObject(ms) as ChunkMetaData;
string path = String.Empty;
// The Name of the Upload component is "files"
if (files != null)
{
foreach (var file in files)
{
//path = Path.Combine(Server.MapPath("~/App_Data"), somemetaData.FileName);
//AppendToFile(path, file.InputStream);
}
}
FileResult fileBlob = new FileResult();
fileBlob.uploaded = somemetaData.TotalChunks - 1<= somemetaData.ChunkIndex;
fileBlob.fileUid = somemetaData.UploadUid;
return Json(fileBlob);
}
但我有一个困惑,kendo chunk 没有按照 chunkSize
变量分割文件。如果我上传一个 30 MB 的文件,它不会拆分 5 MB 的块。为此需要任何额外的编码吗?我不是 chunk
上传配置方面的专家。
在我的问题中,我认为这是版本问题。我正在使用 Kendo UI v2014.3.1316 版本
请看下面的截图。
而且我还查看了发布历史页面。
如有建议请指教
编辑
我更新了 Kendo UI 版本 (2018.3.1017) 并实施了 Kendo MVC 块上传,现在它工作正常。请参阅以下 link 至 https://demos.telerik.com/aspnet-mvc/upload/chunkupload 参考。
升级似乎是最好的方法 - 该功能是在 2017 年实现的,而您使用的是 2014 年版本。
我是使用kendoUpload
控件的新手(KendoUIv2014.3.1316),带有chunk
上传选项.我有一个网络应用程序,使用 kendoupload
控件上传文件,它需要分块上传功能,因为有机会上传更大的文件。请在下面查看我的代码。
Html
<input name="upload" id="mediaflUpload" type="file" />
.js
$("#mediaflUpload").kendoUpload({
async: {
chunkSize: 5000000, // Will separate the file into chunks of size 5000000 bytes.
concurrent: true, // Will upload all files simultaneously.
autoRetryAfter: 300, // Will attempt a failed chunk upload after 300ms.
maxAutoRetries: 4, // Will attempt the same failed chunk upload 4 times.
saveUrl: "/File/ChunkSave",
removeUrl: "/File/Remove",
autoUpload: true
},
multiple: false,
success: OnSuccessMediaFileUpload,
upload: OnUploadMediaFileUpload,
error: OnErrorMediaFileUpload
});
function OnUploadMediaFileUpload(e) {
debugger;
//var data = result.response;
var chunkMetaData = {
UploadUid: "mediaflUpload",
FileName: '',
ContentType: '',
ChunkIndex: 1,
TotalChunks: 1,
TotalFileSize: 30000000
};
e.data = {
metaData: JSON.stringify(chunkMetaData)
};
}
控制器
public ActionResult ChunkSave(IEnumerable<HttpPostedFileBase> files, string metaData)
{
if (metaData == null) {
return Save(files);
}
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(metaData));
var serializer = new DataContractJsonSerializer(typeof(ChunkMetaData));
ChunkMetaData somemetaData = serializer.ReadObject(ms) as ChunkMetaData;
string path = String.Empty;
// The Name of the Upload component is "files"
if (files != null)
{
foreach (var file in files)
{
//path = Path.Combine(Server.MapPath("~/App_Data"), somemetaData.FileName);
//AppendToFile(path, file.InputStream);
}
}
FileResult fileBlob = new FileResult();
fileBlob.uploaded = somemetaData.TotalChunks - 1<= somemetaData.ChunkIndex;
fileBlob.fileUid = somemetaData.UploadUid;
return Json(fileBlob);
}
但我有一个困惑,kendo chunk 没有按照 chunkSize
变量分割文件。如果我上传一个 30 MB 的文件,它不会拆分 5 MB 的块。为此需要任何额外的编码吗?我不是 chunk
上传配置方面的专家。
在我的问题中,我认为这是版本问题。我正在使用 Kendo UI v2014.3.1316 版本
请看下面的截图。
而且我还查看了发布历史页面。
如有建议请指教
编辑
我更新了 Kendo UI 版本 (2018.3.1017) 并实施了 Kendo MVC 块上传,现在它工作正常。请参阅以下 link 至 https://demos.telerik.com/aspnet-mvc/upload/chunkupload 参考。
升级似乎是最好的方法 - 该功能是在 2017 年实现的,而您使用的是 2014 年版本。