文件上传的问题

liangjianshi 2007-03-07 03:25:10
<FORM METHOD=POST ACTION="a.asp" enctype="multipart/form-data">

标题:<input type=text value=1 name=id >
<INPUT TYPE="file" NAME="file" size="20">
<INPUT TYPE="submit" value="上传">

</FORM>
把文件保存到服务器指定的目录下
然后保存 上传后的路径,和文本框的值到数据库中。
大家帮帮忙啊,从网上下的代码,运行都有问题啊。

...全文
556 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
iStringTheory 2007-03-13
  • 打赏
  • 举报
回复
这个需要用到从二进制数据中分离表单数据的方法,另外,你运行代码有什么问题?
hanzhaorui 2007-03-13
  • 打赏
  • 举报
回复
在网上下个实例直接用即可,这东西初学者不太好调.
raybvb09 2007-03-13
  • 打赏
  • 举报
回复
gsid=upfile.form("id")

要加引号的吧。
xdspower 2007-03-09
  • 打赏
  • 举报
回复
你给的是客户端代码,而文件上传主要问题处理是服务器端如何接收、储存和处理,也就是你的a.asp服务器程序如何响应文件上传动作,你都没有给出你下载到什么样的代码了?
craft001wen 2007-03-09
  • 打赏
  • 举报
回复
很简单,我前天刚做了个多附件上传,要的话,加我的QQ:40665034,我发给你
liangjianshi 2007-03-09
  • 打赏
  • 举报
回复
我现在用的是upload_5xsoft.inc无组件上传类
上传页面

<FORM METHOD=POST ACTION="a.asp" enctype="multipart/form-data">
标题:<input type=text value=1 name=id >
<INPUT TYPE="file" NAME="file" size="20">
<INPUT TYPE="submit" value="上传">
</FORM>
后台
set upfile=new upfile_class
gsid=upfile.form(id)
文件是传到指定目录去了,可是接受不到这个值啊
raybvb09 2007-03-08
  • 打赏
  • 举报
回复
那可能是你的上传路径有问题。
liangjianshi 2007-03-08
  • 打赏
  • 举报
回复
用化境的也提示这个错误

Microsoft VBScript 运行时错误 (0x800A01AD)
ActiveX 部件不能创建对象: 'Scripting.Dictionary'

ishion 2007-03-08
  • 打赏
  • 举报
回复
化境不错,
liangjianshi 2007-03-08
  • 打赏
  • 举报
回复

还是这个问题
Microsoft VBScript 运行时错误 (0x800A01AD)
ActiveX 部件不能创建对象: 'Scripting.Dictionary'
cow8063 2007-03-08
  • 打赏
  • 举报
回复
化境上传,搜索,我的都行
subasan 2007-03-08
  • 打赏
  • 举报
回复
给你个实例。。。
www.kudaa.com/downlist.asp
liangjianshi 2007-03-08
  • 打赏
  • 举报
回复
hulin862008


Microsoft VBScript 运行时错误 (0x800A01AD)
ActiveX 部件不能创建对象: 'Scripting.Dictionary'

set objForm=Server.CreateObject("Scripting.Dictionary")


怎么解决啊?
tantaiyizu 2007-03-08
  • 打赏
  • 举报
回复
只需要 用set upload = getobject("script:"&地址)

upload.SaveFile('')
tantaiyizu 2007-03-08
  • 打赏
  • 举报
回复
function BinToStr(uniChar, encoding)
{
Stream.Open();
Stream.Charset = "unicode";
Stream.WriteText(uniChar);
Stream.Position = 0;
if(encoding && encoding != "unicode") Stream.Charset = encoding;
uniChar = Stream.ReadText();
Stream.Close();
return uniChar;
}
function EncodeChar(uniChar)
{
uniChar = uniChar.replace(/[\x00-\xff]/g,
function($1)
{
$1=$1.charCodeAt(0).toString(16).toUpperCase();
if($1.length < 2) $1 = "0" + $1;
return "_00" + $1;
});
return escape(uniChar).replace(/_/g,"%u").replace(/%u(\w{2})(\w{2})/g,"%$2%$1");
}
function ParseData(uniChar)
{
var fieldBody, fieldName, fieldValue, filePath, mimeType;
uniChar = unescape(uniChar.replace(/%(\w{2})%(\w{2})/g, "%u$2$1"));
uniChar = BinToStr(uniChar, Charset);
fieldBody = uniChar.split("\r\n\r\n");
fieldName = fieldBody[0].match(/ name="(.*?)"/)[1];
mimeType = fieldBody[0].match(/Type: (.*)$/);
filePath = fieldBody[0].match(/ filename="(.*?)"/);
fieldBody.shift();
fieldValue = fieldBody.join("\r\n\r\n").replace(/\r\n(\x00)?$/,"");
return [fieldName, fieldValue, filePath?filePath[1]:Nothing, mimeType?mimeType[1]:Nothing];
}
function GetFile(uniChar)
{
uniChar = uniChar.slice(0,-6).replace(/(.*?)(%0D%0A){2}/,"");
var fileSize = uniChar.length / 3;
uniChar = unescape(uniChar.replace(/%(\w{2})%(\w{2})/g,"%u$2$1"));
return [uniChar, fileSize];
}
function MakeFileName()
{
var time = new Date;
var arrName = new Array;
arrName.push(time.getYear().toString().substr(2,2));
arrName.push(time.getMonth()+1);
arrName.push(time.getDate());
arrName.push(time.getHours());
arrName.push(time.getMinutes());
arrName.push(time.getSeconds());
arrName.push(Math.random().toString().substr(2,4));
return arrName.join("!").replace(/!(\d+)/g,function($0,$1){return $1>9?$1:"0"+$1});
}
function TextForm()
{
TempField = new Enumerator(Request.Form);
while(!TempField.atEnd())
{
Field[TempField.item()] = new FormField;
Field[TempField.item()].Value = Request.Form(TempField.item()).Item;
TempField.moveNext();
}
}
function FormField()
{
this.FileName = Nothing;
this.FileType = Nothing;
this.FilePath = Nothing;
this.FileSize = Nothing;
this.SavePath = Nothing;
this.SourceName = Nothing;
this.Message = Nothing;
this.Value = Nothing;
}
function Form(Element)
{
if(Field[Element])
{
var field = new String(Field[Element].Value?Field[Element].Value:"");
field.FileName = Field[Element].FileName;
field.FileType = Field[Element].FileType;
field.FilePath = Field[Element].FilePath;
field.FileSize = Field[Element].FileSize;
field.SavePath = Field[Element].SavePath;
field.SourceName = Field[Element].SourceName;
field.Message = Field[Element].Message;
field.Value = Field[Element].Value;
return field;
}
else
{
return Nothing;
}
}
function AspTest(Sender)
{
if(!this.Server && Sender.Server)
{
this.Server = Sender.Server;
this.Request = Sender.Request;
this.Response = Sender.Response;
this.Application = Sender.Application;
}
}
function Dispose()
{
Field = Stream = Nothing;
CollectGarbage();
}
]]>
</script>
</scriptlet>
</package>
tantaiyizu 2007-03-08
  • 打赏
  • 举报
回复
<?xml version="1.0" encoding="utf-8"?>
<package>
<?component error="false" debug="false"?>
<comment>
<![CDATA[
風雲ASP上传组件(纯Javascript的ASP文件上传组件)
Author: Rimifon
LastModify: 14:00 2006-11-30
]]></comment>
<scriptlet id="Upload">
<registration clsid="{12345678-aabb-ccdd-eeff-012345678900}" progid="Rimifon.Upload" version="3.3" description="風雲ASP上传组件" />
<public>
<property name="Name" dispid="0"><get internalName="ProductName" /></property>
<property name="Filter" />
<property name="MaxSize" />
<property name="Field" />
<property name="Charset" />
<method name="ReadForm">
<parameter name="ReadSize" />
<parameter name="ProgID" />
</method>
<method name="SaveFile">
<parameter name="SavePath" />
</method>
<method name="AspTest">
<parameter name="Sender" />
</method>
<method name="Form">
<parameter name="Element" />
</method>
<method name="Dispose" />
</public>
<implements type="ASP" />
<script language="Javascript">
<![CDATA[
var AspOnly = "本组件仅用于ASP页面。";
var Charset = "gb2312";
var Rule, Field, Stream, Nothing;
var GetFileBody = MaxSize = 0;
var TempField = LastData = "";
var Filter = "rar|zip|txt|gif|jpg|bmp|htm|html|swf|mht";
function ProductName()
{
return "風雲ASP上传组件";
}
function ReadForm(ReadSize, ProgID)
{
Field = new Array;
if(!this.Server) return AspOnly;
Rule = Request.ServerVariables("Http_Content_Type").Item;
if(!Rule || Rule.indexOf("multipart/form-data")) return TextForm();
Rule = "--" + Rule.split("=")[1];
Rule = Rule.replace(/[\x00-\xff]/g,
function($1)
{
return "%" + $1.charCodeAt(0).toString(16).toUpperCase();
});
var TotalBytes = Request.TotalBytes;
if(ReadSize % 2) ReadSize += 1;
if(!ReadSize || ReadSize > TotalBytes) ReadSize = TotalBytes;
var ReadBytes = 0;
if(!Stream)Stream = Server.CreateObject("Adodb.Stream");
while(ReadBytes < TotalBytes && Response.IsClientConnected())
{
ReadBytes += ReadSize;
if(ReadBytes > TotalBytes)
{
ReadSize = ReadSize + TotalBytes - ReadBytes;
ReadBytes = TotalBytes;
}
if(ProgID)
{
Application.Lock();
Application.Contents(ProgID + "_TotalBytes") = TotalBytes;
Application.Contents(ProgID + "_ReadBytes") = ReadBytes;
Application.Unlock();
}
LastData += EncodeChar(BinToStr(Request.BinaryRead(ReadSize)));
if(LastData.length < Rule.length) continue;
if(!GetFileBody && LastData.indexOf(Rule) > -1)
{
GetFullData();
}
else
{
if(!GetFileBody && LastData.indexOf("%0D%0A%0D%0A") > 0)
{

var fieldBody = unescape(LastData.replace(/%(\w{2})%(\w{2})/g, "%u$2$1"));
fieldBody = BinToStr(fieldBody, Charset).split("\r\n\r\n")[0];
var mimeType = fieldBody.match(/Type: (.*)$/);
if(mimeType)
{
var filePath = fieldBody.match(/ filename="(.*?)"/);
TempField = fieldBody.match(/ name="(.*?)"/)[1];
Field[TempField] = new FormField;
Field[TempField].FileType = mimeType[1];
Field[TempField].FilePath = filePath[1];
Field[TempField].SourceName = filePath[1].match(/([^\/\\]*?)$/)[1];
Field[TempField].FileSize = 0;
LastData = LastData.replace(/^(.*?)%0D%0A%0D%0A/,"");
Field[TempField].Value = new Array;
GetFileBody = 1;
}
}
else if(GetFileBody)
{
if(LastData.length < Rule.length + 6) continue;
if(LastData.indexOf("%0D%0A" + Rule) < 0)
{
var uniChar = LastData.slice(0, 0 - Rule.length - 6);
if(uniChar.length % 6) uniChar = uniChar.slice(0, -3);
Field[TempField].FileSize += uniChar.length;
if(!MaxSize || Field[TempField].FileSize/3 <= MaxSize)
Field[TempField].Value.push(unescape(uniChar.replace(/%(\w{2})%(\w{2})/g,"%u$2$1")));
LastData = LastData.replace(uniChar, "");
}
else
{
var uniChar = LastData.split("%0D%0A" + Rule)[0];
Field[TempField].FileSize += uniChar.length;
LastData = LastData.replace(uniChar, "");
if(!MaxSize || Field[TempField].FileSize/3 <= MaxSize)
{
Field[TempField].Value.push(unescape(uniChar.replace(/%(\w{2})%(\w{2})/g,"%u$2$1")));
Field[TempField].Value = Field[TempField].Value.join("");
}
else
{
Field[TempField].Value = "文件太大";
}
Field[TempField].FileSize = Field[TempField].FileSize / 3;
GetFileBody = 0;
if(LastData.length > Rule.length && ReadBytes == TotalBytes) GetFullData();
}
}
}
}
}
function SaveFile(SavePath)
{
if(!this.Server) return AspOnly;
SavePath = SavePath?SavePath.replace(/[\/\\]$/,""):".";
var upFilter = new RegExp("\\.(" + Filter + ")$","i");
for(var i in Field)
{
if(Field[i].FilePath)
{
if(!Field[i].Value)
{
Field[i].Message = "文件内容不能为空";
continue;
}
if(Filter && !Field[i].FilePath.match(upFilter))
{
Field[i].Message = "服务器不接受该类文档";
continue;
}
if(MaxSize && Field[i].FileSize > MaxSize)
{
Field[i].Message = "上传文档大小超过限制";
continue;
}
var filename = Field[i].SavePath;
if(!filename)
{
var fileExt = Field[i].FilePath.match(/\.([^\/\.\\]*)$/);
filename = MakeFileName() + (fileExt?fileExt[0]:"");
Field[i].FileName = filename;
filename = Server.MapPath(SavePath + "\\" + filename);
}
Stream.Type = 2;
Stream.Open();
Stream.Charset = "unicode";
Stream.WriteText(Field[i].Value);
try
{
Stream.SaveToFile(filename);
}
catch(err)
{
Field[i].Message = err.message;
continue;
}
finally
{
Stream.Close();
}
if(!Field[i].SavePath) Field[i].SavePath = filename;
Stream.Type = 1;
Stream.Open();
Stream.LoadFromFile(filename);
Stream.Position = 2;
var file = Stream.Read(Field[i].FileSize);
Stream.Position = 0;
Stream.SetEOS();
Stream.Write(file);
Stream.SaveToFile(filename, 2);
Stream.Close();
}
}
}
function GetFullData()
{
LastData = LastData.split(Rule);
for(var C=0; C<LastData.length-1; C++)
{
if(LastData[C].length < 10) continue;
var strField = ParseData(LastData[C]);
Field[strField[0]] = new FormField;
Field[strField[0]].Value = strField[1];
if(strField[3])
{
Field[strField[0]].FilePath = strField[2];
Field[strField[0]].SourceName = strField[2].match(/([^\/\\]*?)$/)[1];
Field[strField[0]].FileType = strField[3];
var fileInfo = GetFile(LastData[C]);
Field[strField[0]].Value = fileInfo[0];
Field[strField[0]].FileSize = fileInfo[1];
}
}
LastData = LastData.pop();
}
raybvb09 2007-03-08
  • 打赏
  • 举报
回复
运行一下regsvr32 scrrun.dll试试吧。
liangjianshi 2007-03-08
  • 打赏
  • 举报
回复
ActiveX 部件不能创建对象: 'Scripting.Dictionary'
是不能创建对象啊
raybvb09 2007-03-07
  • 打赏
  • 举报
回复
搜索upload_5xsoft.inc无组件上传类,很好用。
hulin862008 2007-03-07
  • 打赏
  • 举报
回复
UpLoadClass.asp代码太长了

不好帖子出来,太长了!!你加QQ群:15710546共享里边下载吧
加载更多回复(2)

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧