我有它工作..但我注意到,一旦我上传的文件变大(约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) 我正在使用plupload来上传ajax文件.现在plupload.Uploader类有很多选项,但没有其他数据.
例如 :
var uploader = new plupload.Uploader({
runtimes : 'gears,html5,flash,silverlight,browserplus',
browse_button : 'pickfiles',
container : 'contact_container',
max_file_size : '10mb',
url : 'upload.php',
flash_swf_url : '/plupload/js/plupload.flash.swf',
silverlight_xap_url : '/plupload/js/plupload.silverlight.xap',
filters : [
{title : "Image files", extensions : "jpg,gif,png"},
{title : "Zip files", extensions : "zip"}
],
resize : {width : 320, height : 240, quality : 90}
});
Run Code Online (Sandbox Code Playgroud)
我想要实现的是我的服务器中有一个文件夹,其中保存了所有上传内容.我需要在文件夹中为每个在那里上传文件的用户创建一个子文件夹.如何将像用户的id这样的数据添加到plupload.Uploader的实例中?或者,如果我将一个表单包装在容器div中,我能否在$ _REQUEST中看到它?还是有其他方法可以实现这个目标吗?
我能够让一切正常工作,我只想回复更新的代码.我使用了Darin Dimitrov关于使用单独的通用http处理程序来处理文件上传的建议,所以这就是我提出的代码...如果您有疑问,请告诉我.
<%@ WebHandler Language="C#" Class="Upload" %>
using System;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Net;
using System.Web;
public class Upload : IHttpHandler {
public void ProcessRequest(HttpContext context) {
/**
* If 'newTicket' is "false", then the directory to upload to already exists and we can extract it from
* the 'ticketID' POST parameter.
*
* If 'newTicket' is "true", then this is a new Ticket submission so we need to work with a NEW directory …Run Code Online (Sandbox Code Playgroud) 我没有看到plupload API文档中有关限制上传文件数量的选项,任何数字,甚至1.
Doc失败了吗?或功能失败?如果它不存在,我会努力让这种情况发生,如果有人需要它..
我使用的是plupload 1.3.0版
更具体地说,我如何定义控制器动作来支持分块?我可以HttpPosteFileBase用作参数吗?
目前我正在使用以下代码初始化插件
在HEAD标签中
<link type="text/css" rel="Stylesheet" media="screen" href="<%: Url.Content( "~/_assets/css/plupload/jquery.ui.plupload.css" )%>" />
<link type="text/css" rel="Stylesheet" media="screen" href="<%: Url.Content( "~/_assets/css/plupload/gsl.plupload.css" )%>" />
<script type="text/javascript" src="<%: Url.Content( "~/_assets/js/plupload/gears_init.js" )%>"></script>
<script type="text/javascript" src="<%: Url.Content( "~/_assets/js/plupload/plupload.full.min.js" )%>"></script>
<script type="text/javascript" src="<%: Url.Content( "~/_assets/js/plupload/jquery.ui.plupload.min.js" )%>"></script>
Run Code Online (Sandbox Code Playgroud)
准备好文件
$("#uploader").pluploadQueue({
runtimes: 'html5,html4,gears,flash,silverlight',
url: '<%: Url.Content( "~/Document/Upload" ) %>',
max_file_size: '5mb',
chunk_size: '1mb',
unique_names: true,
filters: [
{ title: "Documenti e Immagini", extensions: "doc,docx,xls,xlsx,pdf,jpg,png" }
],
multiple_queues: false
});
Run Code Online (Sandbox Code Playgroud) 添加文件后,我想自动开始上传过程.我在FilesAdded结束时调用了start函数,但它没有启动上传.
uploader.bind('FilesAdded', function(up, files) {
var str = "";
for (var i in files) {
str += '<div id="' + files[i].id + '">' + files[i].name + ' (' + plupload.formatSize(files[i].size) + ') <b></b></div>';
}
$('#filelist').html(str);
up.refresh();
up.start();
});
Run Code Online (Sandbox Code Playgroud)
这是我的创作代码
var uploader = new plupload.Uploader({
runtimes: 'html5,flash,silverlight',
autostart : true,
url: '<%= images_path %>',
max_file_size: '10mb',
multipart: true,
browse_button: "pickfiles",
container: "the-uploader",
drop_element : "drop-area",
multipart_params: {
'_http_accept': 'application/javascript',
'<%=request_forgery_protection_token%>': '<%=form_authenticity_token%>',
'<%=request.session_options[:key]%>': '<%=request.session_options[:id]%>'
},
filters: [
{title: "Images", extensions: "avi,jpg,jpeg,png,zip"}
], …Run Code Online (Sandbox Code Playgroud) 亚马逊具有分段上传功能,您可以在其中发送文件并将其汇总到S3上.这允许一些很好的简历,如上传到S3的功能.从另一个问题我得到了这个很好的链接:Rails 3和Plupload
我的问题是,有没有人有任何例子,他们在Amazon多部分功能中使用了plupload chunking功能?理想情况下有载波和雾.
我可以看到它做了以下事情:
据说有一些PHP代码可以进行一些组合,但不能与S3一起使用,我无法阅读PHP.
file-upload ruby-on-rails amazon-s3 plupload ruby-on-rails-3
当我使用plupload来块文件(设置选项chunk_size)时,我会为每个块获得一个单独的PHP请求.查看$_FILES变量,每个块都是类型"application/octet-stream".
有没有简单,标准和舒适的方法如何在服务器端将这些部分组合在一起?
保证理智(例如,当其中一件丢失时等).
plupload ×10
file-upload ×3
amazon-s3 ×2
asp.net-mvc ×2
c# ×2
javascript ×2
jquery ×2
php ×2
asp.net ×1
chunked ×1
httphandler ×1
paperclip ×1
upload ×1