设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 60|回复: 8
打印 上一主题 下一主题

一个关于上传的问题

[复制链接]
跳转到指定楼层
1#
发表于 2010-1-11 04:02:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
全部代码如下:

<%
  Response.Buffer = True
  Server.ScriptTimeOut=9999999
  On Error Resume Next
%>

<style type="text/css">
<!--
body,input {font-size:12px;}
-->
</style>
<title>文件上传</title>
</head>
<body id="body">
<%
  ExtName = "jpg,gif,png,txt,rar,zip,doc,xls"    '允许扩展名
  SavePath = "upload"          '保存路径
  If Right(SavePath,1)<>"/" Then SavePath=SavePath&"/" '在目录后加(/)
  CheckAndCreateFolder(SavePath)

  UpLoadAll_a = Request.TotalBytes '取得客户端全部内容
  If(UpLoadAll_a>0) Then
    Set UploadStream_c = Server.CreateObject("ADODB.Stream")
    UploadStream_c.Type = 1
    UploadStream_c.Open
    UploadStream_c.Write Request.BinaryRead(UpLoadAll_a)
    UploadStream_c.Position = 0

    FormDataAll_d = UploadStream_c.Read
    CrLf_e = chrB(13)&chrB(10)
    FormStart_f = InStrB(FormDataAll_d,CrLf_e)
    FormEnd_g = InStrB(FormStart_f+1,FormDataAll_d,CrLf_e)

    Set FormStream_h = Server.Createobject("ADODB.Stream")
    FormStream_h.Type = 1
    FormStream_h.Open
    UploadStream_c.Position = FormStart_f + 1
    UploadStream_c.CopyTo FormStream_h,FormEnd_g-FormStart_f-3
    FormStream_h.Position = 0
    FormStream_h.Type = 2
    FormStream_h.CharSet = "GB2312"
    FormStreamText_i = FormStream_h.Readtext
    FormStream_h.Close

    FileName_j = Mid(FormStreamText_i,InstrRev(FormStreamText_i,"\")+1,FormEnd_g)

    If(CheckFileExt(FileName_j,ExtName)) Then
      SaveFile = Server.MapPath(SavePath & FileName_j)

      If Err Then
        Response.Write "文件上传: <span style=""color:red;"">文件上传出错!</span> <a href=""" & Request.ServerVariables("URL") &""">重新上传文件</a><br />"
        Err.Clear
      Else
        SaveFile = CheckFileExists(SaveFile)

        k=Instrb(FormDataAll_d,CrLf_e&CrLf_e)+4
        l=Instrb(k+1,FormDataAll_d,leftB(FormDataAll_d,FormStart_f-1))-k-2
        FormStream_h.Type=1
        FormStream_h.Open
        UploadStream_c.Position=k-1
        UploadStream_c.CopyTo FormStream_h,l
        FormStream_h.SaveToFile SaveFile,2
        
        SaveFileName = Mid(SaveFile,InstrRev(SaveFile,"\")+1)
        Response.write "文件上传: <span style=""color:red;"">" & SaveFileName & " </span>文件上传成功! <a href=""" & Request.ServerVariables("URL") &""">继续上传文件</a><br />"
      End If
    Else
      Response.write "文件上传: <span style=""color:red;"">文件格式不正确!</span> <a href=""" & Request.ServerVariables("URL") &""">重新上传文件</a><br />"
    End If

  Else
%>
<script language="Javascript">
<!--
function ValidInput()
{
   
if(document.upform.upfile.value=="")
  {
    alert("请选择上传文件!")
    document.upform.upfile.focus()
    return false
  }
  return true
}
// -->
</script>
<table width=100% border=0 cellspan=0>
<tr><td><form action='<%= Request.ServerVariables("URL") %>' method='post' name="upform" onsubmit="return ValidInput()"  enctype="multipart/form-data"><input type='file' name='textfield2' size="20"><input type='submit' value="上传" onclick="tijiao();"/>
</form></td></tr></table>

<script language="javascript">
function tijiao(){
parent.myform.text1.value=document.all.textfield2.value

}
</script>
<%
  End if
  Set FormStream_h = Nothing
  UploadStream.Close
  Set UploadStream = Nothing
%>
</body>
</html>
<%
  '判断文件类型是否合格
  Function CheckFileExt(FileName,ExtName) '文件名,允许上传文件类型
    FileType = ExtName
    FileType = Split(FileType,",")
    For i = 0 To Ubound(FileType)
      If LCase(Right(FileName,3)) = LCase(FileType(i)) then
      CheckFileExt = True
      Exit Function
      Else
      CheckFileExt = False
      End if
    Next
  End Function

  '检查上传文件夹是否存在,不存在则创建文件夹
  Function CheckAndCreateFolder(FolderName)
    fldr = Server.Mappath(FolderName)
    Set fso = CreateObject("Scripting.FileSystemObject")
    If Not fso.FolderExists(fldr) Then
      fso.CreateFolder(fldr)
    End If
    Set fso = Nothing
  End Function

'检查文件是否存在,重命名存在文件
Function CheckFileExists(FileName)
  Set fso=Server.CreateObject("Scripting.FileSystemObject")
  If fso.FileExists(SaveFile) Then
    i=1
    msg=True
    Do While msg
      CheckFileExists = Replace(SaveFile,Right(SaveFile,4),"_" & i & Right(SaveFile,4))
      If not fso.FileExists(CheckFileExists) Then
        msg=False
      End If
      i=i+1
    Loop
  Else
    CheckFileExists = FileName
  End If
  Set fso=Nothing
End Function
%>




我想把这个页上传的文件的网络地址例如:http://www.ccc.com/upload/1.jpg这个地址返回给父页面

请教大家,帮个忙,谢谢
2#
发表于 2010-1-11 04:02:36 | 只看该作者
以下是引用juran在2009-7-22 17:06的发言:

我现在的做法是用Request.Servervariables("url")把当前的页面地址读出来,然后在后面加上设定的上传路径uppath

也可以这样做,然后加上上传后的文件名就可以。
回复 支持 反对

使用道具 举报

3#
发表于 2010-1-11 04:02:40 | 只看该作者
弹出窗口页面还是内嵌iframe页面?
弹窗用window.opener就可以iframe的话要根据嵌套结构来写。
回复 支持 反对

使用道具 举报

4#
发表于 2010-1-11 04:02:44 | 只看该作者
<form method="POST" name="myform" action="inf_to_server.asp"  onsubmit="return  validate();">

  <table border="1" width="100%" cellspacing="1" height="121" bordercolorlight=#000000 bordercolordark=#ffffff>
    <tr>
      <td width="21%" align="center" height="21">
        标  题</td>
      <td width="79%" height="21"><input type="text" name="biaoti" size="21" style="width: 288; height: 18;background-color: #ffffff;filter:chroma(color=#ffffff);"></td>
    </tr>
    <tr>
      <td width="21%" align="center" height="80">
        内  容</td>
      <td width="79%"  valign="middle"><textarea rows="15" name="neirong" cols="38" style="font-size: 10pt;background-color: #ffffff;filter:chroma(color=#ffffff);overflow: auto"></textarea></td>
    </tr>
    <tr><td align=center>附件:</td>
    <td valign=top>
<input type="text" name="text1">
<iframe src='up/upfile.asp' height=58 name=myiframe id=myiframe frameborder=0 scrolling=no></iframe>
      </td>
    </tr>
  </table>
  <p align="center">
    <input type="submit" value="发布通知" name="B1" style="border:1pt solid #636563;height:18px;background-color: #ffffff;filter:chroma(color=#ffffff);">&nbsp;&nbsp;<INPUT TYPE="reset" value="重新填写" style="border:1pt solid #636563;height:18px;background-color: #ffffff;filter:chroma(color=#ffffff);">
    </p>
</form>


这个是我之前的父页代码,在UPLOAD上面有个INPUT,我想把上传后的图片地址放到数据库,但在那里面我不知道怎么把上传后的图片的地址读出来。
回复 支持 反对

使用道具 举报

5#
发表于 2010-1-11 04:02:48 | 只看该作者
我现在的做法是用Request.Servervariables("url")把当前的页面地址读出来,然后在后面加上设定的上传路径uppath
回复 支持 反对

使用道具 举报

6#
发表于 2010-1-11 04:02:52 | 只看该作者
在1楼里的
<script language="javascript">
function tijiao(){
parent.myform.text1.value=document.all.textfield2.value
}
</script>
只能把onclick后的textfield2中的内容传到父页里,也就是选中你硬盘文件的位置,例如:D:\1.jpg  而不是上传后的地址。
回复 支持 反对

使用道具 举报

7#
发表于 2010-1-11 04:02:56 | 只看该作者
你把上传地址Response.Write到网页上,再用Javascript传过去不就可以了?
回复 支持 反对

使用道具 举报

8#
发表于 2010-1-11 04:03:00 | 只看该作者
我是指上传后的地址
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-18 22:41 , Processed in 0.080239 second(s), 9 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表