您的位置:首页 > 其它

使用 swfupload 遇到的一些问题

2009-10-26 19:31 543 查看
swfupload 是一个客户端文件上传工具,它通过整合Flash与JavaScript技术为web开发人员提供了一个具有丰富功能超越传统<input type="file" />标签的文件上传模式。目前swfupload最新版本为V2.2.0,支持Flash Player 10 和9,不支持flash player8。swfupload 网址:http://swfupload.org/

在使用过程中遇到的值得记录的地方。

1.在官方给的demo中(applicationdemo.net),有三个页面Default.aspx,upload.aspx,thumbnail.aspx。因为我要做的是上传多个文件到文件系统中,所有我需要关注的是Default.aspx,upload.aspx两个页面。Default页面用于用户选择上传文件,upload页面接收swfupload发送过来的文件数据,在upload后台Page_Load方法中用下面的语句接收

HTMLPostedFile hpf = Request.Files["Filedata"];
2.default.aspx

<link href="CSS/uploadProgress.css" type="text/css" rel="Stylesheet" />
<script type="text/javascript" src="js/swfupload.js"></script>
<script type="text/javascript" src="js/handlers.js"></script>
<script type="text/javascript" src="js/swfupload.queue.js"></script>
<script type="text/javascript" src="js/fileprogress.js"></script>

<script type="text/javascript">
var swfu;
var clientName;
var projectName;
var conceptName;
var projectId;
var conceptId;
var ddlClient;
var ddlProject;
var ddlConcept;

</script>
3.原本在window.onload中调用ddlClientName() ,ddlProjectName(),ddlConceptName() 三个函数,但一直出现
“uncaught exception: call to SetPostParams failed” 错误(FF 3.5.3中),原因是此时swfu还未完全载入,遂将对这三个函数的调用放入handlers.js中fileDialogStart()函数中:

<div id="content">
<div id="swfu_container">
<div id="divUploadButton">
<span id="spanButtonPlaceholder"></span>
</div>
<div id="divUploadProgress"></div>
</div>
</div>
<div class="divUploadCancel">
<input id="btnUpload" type="button" value="Upload" onclick="swfu.startUpload()" />
<input id="btnCancel" type="button" value="Cancel Upload" disabled="disabled" onclick="cancelQueue(swfu)" />
</div>
<div><asp:Label id="Label1" runat="server" ForeColor="Red" Text="errror message" /></div>

upload.aspx.cs:

protected void Page_Load(object sender, EventArgs e) {
try
{
HttpPostedFile upload = Request.Files["FileData"];
// 获得文件保存路径
string path = ConfigurationManager.AppSettings["UploadBannerPath"];
string client = Request.QueryString["param_client"].ToString();
string project = Request.QueryString["param_project"].ToString();
int projectId = Convert.ToInt32(Request.QueryString["param_projectId"]);
string concept = Request.QueryString["param_concept"].ToString();
int conceptId = Convert.ToInt32(Request.QueryString["param_conceptId"]);

string fileName = Path.GetFileName(upload.FileName);
path += "\\" + client + "\\" + project + "\\" + concept;
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}

SaveRecordToDB(fileName, client, project, projectId, concept, conceptId);

// 保存文件
upload.SaveAs(path + "\\" + fileName);
// 返回状态码
Response.StatusCode = 200;
Response.Write("Success");
}
catch
{
Response.StatusCode = 500;
Response.Write("An error occured");
Response.End();
}
finally
{
Response.End();
}
} 下面是一些截图:

(1)选择文件后:


(2)点击Upload按钮:



附:swfupload 中文帮助文档:http://www.v-sky.com/doc/swfupload/Documentation.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: