//1。当加载了文件后,触发的事件.这里,是让他的名字赋予txtbox
function fileQueued(file)
{
try {
var txtFileName = document.getElementById("txtFileName");
txtFileName.value = file.name;
}
catch (e)
{
}
}
//2。上传进度设置事件
function uploadProgress(file, bytesLoaded) {
try {
var percent = Math.ceil((bytesLoaded / file.size) * 100);
var progress = new FileProgress(file, this.customSettings.upload_target);
progress.setProgress(percent);
if (percent === 100) {
progress.setStatus("上传完毕,正在释放内存,请锁定鼠标,不要乱动,正在保存......");
progress.toggleCancel(false, this);
//跳转到上传成功网页
refresh();
}
//显示上传信息
else {
progress.setStatus("上传中,请梢后......‖已上传:"+(bytesLoaded/(1024*1024))+"/"+file.size+" 『"+percent+"%』");
progress.toggleCancel(true, this);
}
} catch (ex) {
this.debug(ex);
}
}
//3。上传一个文件成功后,所触发的事件。
function uploadComplete(file) {
try {
//若有多个文件,则上传一个成功后,继续上传,否则显示上传成功!
if (this.getStats().files_queued > 0) {
this.startUpload();
} else {
var progress = new FileProgress(file, this.customSettings.upload_target);
progress.setComplete();
progress.setStatus("所有文件都上传成功!.");
progress.toggleCancel(false);
}
} catch (ex) {
this.debug(ex);
}
}
//4。删除刚才选择的上传文件
function uploadCancel()
{
swfu.cancelUpload("SWFUpload_0_0");
}
//5。当选择框被关闭后,所触发的事件.这里,我还没有用.以后真对需要,可以填写在里面
function fileDialogComplete(numFilesSelected, numFilesQueued)
{
}
//6。错误事件处理。
function uploadError(file, errorCode, message) {
var imageName = "error.gif";
var progress;
try {
switch (errorCode) {
case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
try {
return;
progress = new FileProgress(file, this.customSettings.upload_target);
progress.setCancelled();
progress.setStatus("已取消!");
progress.toggleCancel(false);
}
catch (ex1) {
this.debug(ex1);
}
break;
case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
try {
progress = new FileProgress(file, this.customSettings.upload_target);
progress.setCancelled();
progress.setStatus("Stopped");
progress.toggleCancel(true);
}
catch (ex2) {
this.debug(ex2);
}
case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
imageName = "uploadlimit.gif";
break;
default:
alert(message);
break;
}
addImage("images/" + imageName);
} catch (ex3) {
this.debug(ex3);
}
}
大家可以把这些文件保存到一个.js文件里,在要上传的页面里引用此js文件,就可以了!
3.upload.aspx文件。
这个文件是把文件以MIME的形式读取到服务器上后,所触发的。是一个隐藏的页面。大家把自己想要进行的后续操作,都写在这个页面的page_load事件里。比如说:保存文件到C:\,并把此文件的附加信息保存到数据库里。
upload.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Collections;
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;
using System.Collections.Generic;
public partial class upload : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
try
{
// 获取从MIME中读取出来的文件
HttpPostedFile postedFile = Request.Files["Filedata"];
//获得文件存放路径
string serverFilePath = "";
string fileExtention = postedFile.FileName.Substring(postedFile.FileName.LastIndexOf("."));
//获取文件大小
double size = (double)(postedFile.ContentLength) / (1024 * 1024);
//判断是哪种类型的上传
string oper = Request.QueryString["oper"].ToString();
//1.若是文档上传
switch (oper)
{
case "fileUpload":
{
//获取文档的保存路径
serverFilePath = sourceCenter.getSourcePathByArgs("文档");
//获取传过来的参数
string fileName = Request.QueryString["fileName"].ToString();//文件名
string fileAuthor = Request.QueryString["fileAuthor"].ToString();//文件的作者
string fileSource = Request.QueryString["fileSource"].ToString();//文件来源
string fileClass = Request.QueryString["fileClass"].ToString();//文件类型
string[] fileClassInfo = fileClass.Split("~".ToCharArray());
string fileType = Request.QueryString["fileType"].ToString();//文件的后缀名
string keyWords = Request.QueryString["keyWords"].ToString();//关键字
string fileContent = Request.QueryString["fileContent"].ToString();//文件的简介
string filePubDate = Request.QueryString["filePubDate"].ToString();//文件的发表日期
//3.插入主表
int sourceId = sourceCenter.insertMainInfo(fileName, "文档", fileContent, serverFilePath, size.ToString("f2"), 0, "1", "徐辉", DateTime.Now, fileExtention);
//4.插入文档表
if (filePubDate != "null")
filePubDate=Convert.ToDateTime(filePubDate).ToShortDateString();
sourceCenter.insertFileInfo(sourceId, fileClassInfo[0], fileAuthor, filePubDate, fileSource, keyWords, fileType);
DirectoryInfo dirInfo = new DirectoryInfo(serverFilePath);
//若路径不存在,则创建
if (!dirInfo.Exists)
dirInfo.Create();
//连接文件保存的绝对路径
serverFilePath += sourceId.ToString() + "~" + fileName;
break;
}
case "softUpload":
{
//1.获取软件的保存路径
serverFilePath = sourceCenter.getSourcePathByArgs("软件");
//2.获取传过来的参数
string softName = Request.QueryString["softName"].ToString();
string softClass = Request.QueryString["softClass"].ToString();
string platform = Request.QueryString["platform"].ToString();
string softRight = Request.QueryString["softRight"].ToString();
string language = Request.QueryString["language"].ToString();
string developCompany = Request.QueryString["developCompany"].ToString();
string softContent = Request.QueryString["softContent"].ToString();
//3.插入主表
int sourceId=sourceCenter.insertMainInfo(softName, "软件", softContent, serverFilePath, size.ToString("f2"), 0, "1", "徐辉", DateTime.Now, fileExtention);
//4.插入文档表
sourceCenter.insertSoftInfo(sourceId, softClass, platform, softRight, language, developCompany);
DirectoryInfo dirInfo = new DirectoryInfo(serverFilePath);
//若路径不存在,则创建
if (!dirInfo.Exists)
dirInfo.Create();
//5.连接文件保存的绝对路径
serverFilePath += sourceId.ToString() + "~" + softName;
break;
}
case "mediaUpload":
{
//1.获取软件的保存路径
serverFilePath = sourceCenter.getSourcePathByArgs("媒体");
//2.获取传过来的参数
string mediaName = Request.QueryString["mediaName"].ToString();
string mediaLanguage = Request.QueryString["mediaLanguage"].ToString();
string actor = Request.QueryString["actor"].ToString();
string mediaExtention = Request.QueryString["mediaExtention"].ToString();
string mediaKind = Request.QueryString["mediaKind"].ToString();
string mediaClass = Request.QueryString["mediaClass"].ToString();
string mediaPubDate = Request.QueryString["mediaPubDate"].ToString();
string mediaContent = Request.QueryString["mediaContent"].ToString();
//3.插入主表
int sourceId=sourceCenter.insertMainInfo(mediaName, "媒体", mediaContent, serverFilePath, size.ToString("f2"), 0, "1", "徐辉", DateTime.Now, fileExtention);
//4.插入文档表
sourceCenter.insertMediaInfo(sourceId, mediaClass, mediaKind, mediaLanguage, actor, mediaPubDate, mediaExtention);
DirectoryInfo dirInfo = new DirectoryInfo(serverFilePath);
//若路径不存在,则创建
if (!dirInfo.Exists)
dirInfo.Create();
//5.连接文件保存的绝对路径
serverFilePath += sourceId.ToString() + "~" + mediaName;
break;
}
case "imageUpload":
{
break;
}
default:
{
break;
}
}
//保存上传上来的文件
postedFile.SaveAs(@serverFilePath+fileExtention);
}
catch
{
//若保存时发生错误。
Response.StatusCode = 500;
Response.Write("文档上传时,发生错误!");
Response.End();
}
finally
{
Response.End();
}
}
}
三、总结:
1。上传主界面,初始化一个swfu对象
2。根据handle.js,抽取自己需要的方法,重写,并保存为自己的js文件。
3。新建一个upload.aspx文件,把一些后续操作放在page_load事件里。
4。打完收工!休息,睡觉!哈哈!
好了,大家现在明白了,怎么做自己的文件上传了吗?呵呵!虽然没什么技术含量,大家不要骂我。要不,我会伤心的,呵呵!