官方网没有.net版本 只有php版 下面是.net版
css:
<style type="text/css">
.swiff-uploader-box a {
display: none !important;
}
a:hover, a.hover {
color: red;
}
#demo-status {
padding: 10px 15px;
width: 420px;
border: 1px solid #eee;
}
#demo-status .progress {
background: url(img/progress.gif) no-repeat;
background-position: +50% 0;
margin-right: 0.5em;
vertical-align: middle;
}
#demo-status .progress-text {
font-size: 0.9em;
font-weight: bold;
}
#demo-list {
list-style: none;
width: 450px;
margin: 0;
}
#demo-list li.validation-error {
padding-left: 44px;
display: block;
clear: left;
line-height: 40px;
color: #8a1f11;
cursor: pointer;
border-bottom: 1px solid #fbc2c4;
background: #fbe3e4 url(img/failed.png) no-repeat 4px 4px;
}
#demo-list li.file {
border-bottom: 1px solid #eee;
background: url(img/file.png) no-repeat 4px 4px;
overflow: auto;
}
#demo-list li.file.file-uploading {
background-image: url(img/uploading.png);
background-color: #D9DDE9;
}
#demo-list li.file.file-success {
background-image: url(img/success.png);
}
#demo-list li.file.file-failed {
background-image: url(img/failed.png);
}
#demo-list li.file .file-name {
font-size: 1.2em;
margin-left: 44px;
display: block;
clear: left;
line-height: 40px;
height: 40px;
font-weight: bold;
}
#demo-list li.file .file-size {
font-size: 0.9em;
line-height: 18px;
float: right;
margin-top: 2px;
margin-right: 6px;
}
#demo-list li.file .file-info {
display: block;
margin-left: 44px;
font-size: 0.9em;
line-height: 20px;
clear
}
#demo-list li.file .file-remove {
clear: right;
float: right;
line-height: 18px;
margin-right: 6px;
}
</style>
js:
<script type="text/javascript" src="js/mootools-1.2.4-core.js"></script>
<script type="text/javascript" src="js/Swiff.Uploader.js"></script>
<script type="text/javascript" src="js/Fx.ProgressBar.js"></script>
<script type="text/javascript" src="js/FancyUpload2.js"></script>
<script type="text/javascript">
window.addEvent('domready', function() {
var up = new FancyUpload2($('demo-status'), $('demo-list'), {
verbose: true,
url: $('form-demo').action,
path: 'js/Swiff.Uploader.swf',
typeFilter: {
'Images (*.jpg, *.jpeg, *.gif, *.png)': '*.jpg; *.jpeg; *.gif; *.png'
},
target: 'demo-browse',
onLoad: function() {
$('demo-status').removeClass('hide');
$('demo-fallback').destroy();
this.target.addEvents({
click: function() {
return false;
},
mouseenter: function() {
this.addClass('hover');
},
mouseleave: function() {
this.removeClass('hover');
this.blur();
},
mousedown: function() {
this.focus();
}
});
$('demo-clear').addEvent('click', function() {
up.remove();
return false;
});
$('demo-upload').addEvent('click', function() {
up.start();
return false;
});
},
onSelectFail: function(files) {
files.each(function(file) {
new Element('li', {
'class': 'validation-error',
html: file.validationErrorMessage || file.validationError,
title: MooTools.lang.get('FancyUpload', 'removeTitle'),
events: {
click: function() {
this.destroy();
}
}
}).inject(this.list, 'top');
}, this);
},
onFileSuccess: function(file, response) {
var json = new Hash(JSON.decode(response, true) || {});
if (json.get('status') == '1') {
file.element.addClass('file-success');
file.info.set('html', '<strong>Image was uploaded:</strong> ' + json.get('width') + ' x ' + json.get('height') + 'px, <em>' + json.get('mime') + '</em>)');
} else {
file.element.addClass('file-failed');
file.info.set('html', '<strong>An error occured:</strong> ' + (json.get('error') ? (json.get('error') + ' #' + json.get('code')) : response));
}
},
onFail: function(error) {
switch (error) {
case 'hidden':
alert('To enable the embedded uploader, unblock it in your browser and refresh (see Adblock).');
break;
case 'blocked':
alert('To enable the embedded uploader, enable the blocked Flash movie (see Flashblock).');
break;
case 'empty':
alert('A required file was not found, please be patient and we fix this.');
break;
case 'flash':
alert('To enable the embedded uploader, install the latest Adobe Flash plugin.')
}
}
});
});
</script>
html:
<form action="Upload.axd" method="post" enctype="multipart/form-data" id="form-demo">
<fieldset id="demo-fallback">
<legend>File Upload</legend>
<p>
This form is just an example fallback for the unobtrusive behaviour of FancyUpload.
If this part is not changed, something must be wrong with your code.
</p>
<label for="demo-photoupload">
Upload a Photo:
<input type="file" name="Filedata" />
</label>
</fieldset>
<div id="demo-status" class="hide">
<p>
<a href="#" id="demo-browse">浏览</a> |
<a href="#" id="demo-clear">清除列表</a> |
<a href="#" id="demo-upload">上传</a>
</p>
<div>
<strong class="overall-title"></strong><br />
<img src="img/bar.gif" class="progress overall-progress" />
</div>
<div>
<strong class="current-title"></strong><br />
<img src="img/bar.gif" class="progress current-progress" />
</div>
<div class="current-text"></div>
</div>
<ul id="demo-list"></ul>
</form>
后台:
Upload.cs:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
/// <summary>
/// Upload handler for uploading files.
/// </summary>
public class Upload : IHttpHandler
{
public Upload() { }
#region IHttpHandler Members
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
context.Response.Charset = "utf-8";
HttpPostedFile oFile = context.Request.Files["Filedata"];
string strUploadPath = HttpContext.Current.Server.MapPath(@"~/Upload"+"\\");
if (oFile != null)
{
if (!Directory.Exists(strUploadPath))
{
Directory.CreateDirectory(strUploadPath);
}
oFile.SaveAs(strUploadPath + oFile.FileName);
//context.Response.Write("1");出错 要对应JSON格式?
context.Response.Write("{\"status\":\"1\",\"name\":\"\",\"hash\":\"\",\"width\":250,\"height\":12,\"mime\":\"image\"}");
}
else
{
//context.Response.Write("0");
context.Response.Write("{\"status\":\"0\",\"name\":\"\",\"hash\":\"\",\"width\":250,\"height\":12,\"mime\":\"image\"}");
}
// Used as a fix for a bug in mac flash player that makes the
// onComplete event not fire
HttpContext.Current.Response.Write(" ");
}
public bool IsReusable
{
get { return false; }
}
#endregion
}
Web.config:
<httpHandlers>
<remove verb="POST,GET" path="Upload.axd"/>
<add verb="POST,GET" path="Upload.axd" type="Upload"/>
<httpRuntime maxRequestLength="1550000"/>
实现IHttpHandler 接口可用.axd直接访问
在开发一个上传客户端的时间,实现了IHttpHandler 封装一个新类。目的是给外部程序(如flash,flex,javascrtip)访问。不需要建立html、aspx形式文件。
web.config配置
<system.web>
<httpHandlers>
<remove verb="POST,GET" path="FlashUpload.axd"/>
<add verb="POST,GET" path="FlashUpload.axd" type="FlashUpload"/>
</httpHandlers>
</system.web>
但注意事项,当web.config作了权限配置的话,要对其文件进行权限开通!
<location path="fileupload.axd">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
这也通用于.axd外的文件。没有权限访问就会访问失败,在 MS Asp.net Ajax 中的就曾看过“脚本错误: 'Sys'未定义,原因就是没开通权限!