嗨,我正在尝试使用此代码发送带有xmlhttprequest的文件.
<script>
var url= "http://localhost:80/....";
$(document).ready(function(){
document.getElementById('upload').addEventListener('change', function(e) {
var file = this.files[0];
var xhr = new XMLHttpRequest();
xhr.file = file; // not necessary if you create scopes like this
xhr.addEventListener('progress', function(e) {
var done = e.position || e.loaded, total = e.totalSize || e.total;
console.log('xhr progress: ' + (Math.floor(done/total*1000)/10) + '%');
}, false);
if ( xhr.upload ) {
xhr.upload.onprogress = function(e) {
var done = e.position || e.loaded, total = e.totalSize || e.total;
console.log('xhr.upload progress: ' + done + ' …Run Code Online (Sandbox Code Playgroud) 我有它工作..但我注意到,一旦我上传的文件变大(约4000k)控制器将不会被调用..
所以我在chunking中添加了哪个修复了这个问题..但是现在当我打开文件时它充满了垃圾字符......
那么使用plupload/MVC 4上传大文件的正确方法是什么?
这是我目前的代码
$(document).ready(function () {
var uploader = new plupload.Uploader({
runtimes: 'html5',
browse_button: 'pickfiles',
container: 'container',
// max_file_size: '20000mb',
url: '@Url.Action("Upload", "Home")',
chunk_size: '4mb',
//filters: [
// { title: "Excel files", extensions: "xls,xlsx" },
// { title: "Text files", extensions: "txt" }
//],
multiple_queues: true,
multipart: true,
multipart_params: { taskId: '' }
});
Run Code Online (Sandbox Code Playgroud)
和控制器
[HttpPost]
public ActionResult Upload(int? chunk, string name, string taskId)
{
string filePath = "";
var fileUpload = Request.Files[0];
var uploadPath = Server.MapPath("~/App_Data/Uploads");
chunk …Run Code Online (Sandbox Code Playgroud) 我正在使用MVC 4 + VS 2012 + Framework 4.5开发Web应用程序.
我有三个部分视图,它们是基于用户操作在我的索引页面上动态呈现的.
在三个局部视图中,一个局部视图具有Upload File一些输入字段(如文本框)的功能.
问题:
当用户单击保存按钮(存在于部分视图本身上)时.我想将输入字段保存到我的数据库中,并将上传的文件存储在共享文件夹中.
我想使用Ajax实现这一点(上传文件并保存数据后,用户应该在同一个视图上).
我该如何实现呢?JQuery解决方案没问题.
我试过@Ajax.BeginForm但在上传文件后,发生了完整的回复.