Dyn*_*nde 8 asp.net-mvc plupload
所以,我在MVC3中使用flash运行时实现了plupload.
它的工作方式非常完美,因为它使用更正操作上传并运行它.但是,我真的希望能够控制响应,并在plupload中处理它,但我似乎无法得到任何响应.
我已经尝试重写fileUploaded,但我似乎无法从参数中得到任何东西.我已经尝试过返回简单的字符串,json以及你有什么.我似乎无法在客户端获得任何东西.当然通过flash发送,我甚至无法用firebug调试请求:/
与Error事件相同,并抛出异常.它正确地将异常解释为错误,但总是#IO ERROR与某些代码(如2038)或其他东西出现在另一端.我无法显示我的异常字符串或任何内容.有人可以帮忙吗?
奖金问题:我如何发送会话/ cookie数据以及plupload,所以我可以在我的行动中访问会话?
Dar*_*rov 13
以下对我有用:
[HttpPost]
public ActionResult Upload(int? chunk, string name)
{
var fileUpload = Request.Files[0];
var uploadPath = Server.MapPath("~/App_Data");
chunk = chunk ?? 0;
using (var fs = new FileStream(Path.Combine(uploadPath, name), 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);
}
return Json(new { message = "chunk uploaded", name = name });
}
Run Code Online (Sandbox Code Playgroud)
在客户端:
$('#uploader').pluploadQueue({
runtimes: 'html5,flash',
url: '@Url.Action("Upload")',
max_file_size: '5mb',
chunk_size: '1mb',
unique_names: true,
multiple_queues: false,
preinit: function (uploader) {
uploader.bind('FileUploaded', function (up, file, data) {
// here file will contain interesting properties like
// id, loaded, name, percent, size, status, target_name, ...
// data.response will contain the server response
});
}
});
Run Code Online (Sandbox Code Playgroud)
就奖金问题而言,我愿意通过不使用会话来回答它,因为它们不能很好地扩展,但因为我知道你可能不喜欢这个答案你有可能通过一个会话请求中的id使用multipart_params:
multipart_params: {
ASPSESSID: '@Session.SessionID'
},
Run Code Online (Sandbox Code Playgroud)
然后在服务器上执行一些黑客来创建正确的会话.
看这里:
$("#uploader").pluploadQueue({
// General settings
runtimes: 'silverlight',
url: '/Home/Upload',
max_file_size: '10mb',
chunk_size: '1mb',
unique_names: true,
multiple_queues: false,
// Resize images on clientside if we can
resize: { width: 320, height: 240, quality: 90 },
// Specify what files to browse for
filters: [
{ title: "Image files", extensions: "jpg,gif,png" },
{ title: "Zip files", extensions: "zip" }
],
// Silverlight settings
silverlight_xap_url: '../../../Scripts/upload/plupload.silverlight.xap'
});
// Client side form validation
$('form').submit(function (e) {
var uploader = $('#uploader').pluploadQueue();
// Files in queue upload them first
if (uploader.files.length > 0) {
// When all files are uploaded submit form
uploader.bind('StateChanged', function () {
if (uploader.files.length === (uploader.total.uploaded + uploader.total.failed)) {
$('form')[0].submit();
}
});
uploader.start();
} else {
alert('You must queue at least one file.');
}
return false;
});
Run Code Online (Sandbox Code Playgroud)
在控制器中:
[HttpPost]
public string Upload( ) {
HttpPostedFileBase FileData = Request.Files[0];
if ( FileData.ContentLength > 0 ) {
var fileName = Path.GetFileName( FileData.FileName );
var path = Path.Combine( Server.MapPath( "~/Content" ), fileName );
FileData.SaveAs( path );
}
return "Files was uploaded successfully!";
}
Run Code Online (Sandbox Code Playgroud)
这就是......控制器中不需要任何块...
| 归档时间: |
|
| 查看次数: |
5572 次 |
| 最近记录: |