热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

帮忙图片+文字同时上传怎么不行啊

问个低级的问题表单提交<FORMmethodpostenctypemultipartform-data传过去的是二进制的,request不出文本框内容,不用图片
问个低级的问题

表单提交

传过去的是二进制的,request不出文本框内容,不用图片又无法上传图片
怎么办啊?

14 个解决方案

#1


那就 用二进制啊

#2


“无组件上传”本版里搜索一下,很多的!

#3


图片和文字要分成两个Form来上传的.

看看这文章,写得很详细.

系统:Win98se + pws + asp 

编程环境:Visual Interdev 6.0 

数据库:Access2000 (因为网友问的最多的都是Access2000的问题。) 

建一个库:access2000中,先建好一个Test.mdb的数据库。具体有四个字段。 

id | text1 | text2 | img 

自动编号 文本 文本 OLE对象 ’如果是sql server 则选择(image即可) 


三:Are you ready ,Go!!! 


3-1.建上传表单: 

我们知道,图像与文本是两种不同制式的文件(二进制,流式文本)而如果要同一表单提交的话,(file格式提交)则我们获取时就不能用原来的方法request.form而必须用equest.TotalBytes来获得所有的提交资料。但这时两种格式的文件混合在一起比较难分。我的上一贴已经告诉大家用二进制的方法来分开这些资料。但十分麻烦,要用到许多二进值的函数,所以许多网友来信问我有没有更简单的方法,好。我可以告诉大家,有!而且保证下面的方法保证一学就会。(这种方法很另类但伟人说过白猫,黑猫。能上网的就是好猫!) 


upload.asp(具体代码如下) 


<% @ language=Vbscript %> 
 
 
 
 
 
 
 

 
Please choose a picture to upload: 
 
 
 
 

 

 

 
 
 

 
 

3-2 兵分两路来处理数据。 
首先,文本很简单。 

uptext.asp (代码如下) 

<% @ language=Vbscript %> 
<% 
strcOnn="driver={microsoft access driver (*.mdb)};dbq="&server.MapPath("test.mdb") 

text1=request.form("text1") 
text2=request.form("text2") 
response.write text1 
response.write text2 

set rs=Server.CreateObject("adodb.recordset") 
sql="SELECT top 1 * FROM imgtable ORDER BY id DESC" ’这里的意思是选择最后一个Id,既刚刚被改动 
rs.Open sql,strconn,1,3 ’就是你上传的图像的两个文本字段。 

rs("text1")=text1 ’注意,这里是改动不是添加,所以不用addnew。 
rs("text2")=text2 
rs.Update 
rs.Close 
%> 
接着,来处理图像。 
upimage.asp (具体代码如下) 

<% 
FormSize = Request.TotalBytes ’得到数据 
FormData = Request.BinaryRead( FormSize ) 

function ImageUp(formsize,formdata) ’这个函数的功能是截取其中的图像部分。 
bncrlf=chrb(13) & chrb(10) ’做成函数后。以后你可以自己随意使用了。 
divider=leftb(formdata,instrb(formdata,bncrlf)-1) 
datastart=instrb(formdata,bncrlf&bncrlf)+4 
dataend=instrb(datastart+1,formdata,divider)-datastart 
imageup=midb(formdata,datastart,dataend) 
end function 

Image=ImageUp (FormSize,Formdata) ’这里就是图像部分了。 

set rs=server.CreateObject("adodb.recordset") 
strcOnn="driver={microsoft access driver (*.mdb)};dbq="&server.MapPath("test.mdb") 
sql="SELECT * FROM imgtable" 
rs.Open sql,strconn,1,3 

rs.AddNew ’因为表单二在表单一提交的过程中下提交了。 
rs("img").appendchunk Image ’所以这里是添加。 
rs.Update 
rs.Close 


response.cOntenttype="image/gif" 
response.binarywrite imageup(formsize,formdata) ’这里是显示图像。表示成功! 

%> 

啊?!?!原来如此简单! 

四:“显示,我要同页显示” 
终于完成了图文同步提交。(真的是同步吗?不是吗?是吗? 唉,我们只是为了解决问题。何必当真哪?不是 吗?) 
现在我们还要让他同页显示出来。其实,这是同样的思路。我们也用两页来完成。 

主页面:show.asp 

<%@ Language=Vbscript %> 
<% 
strcOnn="driver={microsoft access driver (*.mdb)};dbq="&server.MapPath("test.mdb") 

set rs=Server.CreateObject("adodb.recordset") 
sql="SELECT top 1 * FROM imgtable ORDER BY id DESC" 
rs.Open sql,strconn,1,3 
%> 
 
 
以下是你的上传资料。
 
文本一:<% Response.Write rs("text1") %>
 
文本二:<% Response.Write rs("text2") %>
 

你的图像: 
> ’注意这里,这才是关键。他可以实现网页图像与文本 
 ’共存。 
 

幕后页面:showimg.asp (说他是幕后的页面,因为他潜伏在主页面里。看上是一个页面一样) 

<%@ Language=Vbscript %> 
<% 
strcOnn="driver={microsoft access driver (*.mdb)};dbq="&server.MapPath("test.mdb") 
id=Request("id") 
set rs=server.CreateObject("adodb.recordset") 
sql="SELECT * FROM imgtable where id="&id 
rs.Open sql,strconn,1,3 
response.cOntenttype="image/gif" 
Response.BinaryWrite rs("img") 
%> 

#4


上面的仁兄。这个过程没有执行啊。
Sub form2_onsubmit //** 这里是关键,当form2在提交的过程中时,即活form1的提交 
form1.submit //**所以我们这里用了两个表单,但只用一个提交就可以了。 
End Sub 

所以运行出错。有解决的方法吗?急。

还有个问题就是怎样用个循环把图片都显示出来?

#5


循环显示:  <% 
i=1

  do while not rs2.eof      
 
      %>  
  
            
      
                                     " alt="This is a picture of product" border="0"   Onclick="document.all.bigImg.src='../admin/product/<%=rs2("productbpic")%>',document.all.pictext.innerHTML='<%=rs2("ywproductjj")%>',document.all.dgou.innerHTML=')>Order'">
 <%if i mod 2 =0  then response.Write ""
                                
rs2.movenext
i=i+1

%>


<%
loop%>

#6


这个是每行显示2个,如果显示3个就改:
if i mod 3
下面一样
如果显示一个
那就更简单了!
把if mod 去掉就是
图片混合上传的代码我可以给你给我个你的邮件

#7


jervis82@hotmail.com

#8


现在的大多数上传文件或者图片都是用的无组件上传类,而无组件上传类,你要先建立一个上传对象,并且获取参数的方法也稍有不同。我现在用的是化境的无组件类 。
如果你要获取参数,请参考以下我的代码:
----------------------------------------------------------------------------------


 
<%
set upload=new upload_5xsoft
set file=upload.file("file1")
response.write upload.form("submit")&"
"
if file.fileSize>0 then
 file.saveAs Server.mappath("temp.jpg")
 response.write "
上传文件:"&file.FileName&" => temp.jpg OK!"
 response.write "
文件大小:"&file.FileSize
end if
set file=nothing
set upload=nothing
%> 



---------------------------------------------------------------------------------
以上是化境组件类里带的说明,很好用。而且支持多表单上传,如果你需要的话,可以到http://www.5xsoft.com/去下载吧。。里面带有说明。。

#9


你搜索一下,就很多的
我都发了好几个了,
郁闷

#10


我刚做的,
把源码给你:

------------------------------------------------FenFaEdit.asp
<%@LANGUAGE="Vbscript"%>



<%
if session("UserID")="" then%>
  






<%
Dim TskName,TskType,TskContent,Qd_Flag,beizhu1,beizhu2,beizhu3,Cont
Dim rs,sql,rs1,sql1,conn,exitst
exitst=0
set cOnn=application("conn")
set rs=server.createobject("adodb.recordset")
sql="select * from DistributeTask where ID="&request("cqid")&""
rs.open sql,conn,3,1

TaskID=rs("ID")
TskName=rs("TaskName")
session("TskName")=TskName
TskType=rs("TaskType")
TskCOntent=rs("TaskContent")
session("TskContent")=TskContent
Qd_flag=rs("Flag")
Qd_Run=rs("RepeatRun")
iprang=rs("ValidIPRange")
iprang2=rs("InvalidIPRange")
ostype=rs("OsType")
runtime=rs("TaskStartTime")
beizhu1=rs("Remark1")
beizhu2=rs("Remark2")
beizhu3=rs("Remark3")

Rs.Close
SET rs=nothing 

set rs1=server.createobject("adodb.recordset")
    sql1="select * from DistributeTask where TaskName='"&request("TskName")&"' and ID <> "&request("cqid")&"" 
    rs1.open sql1,conn,3,1

    if rs1.recordcount<>0 then
exitst=1
end if
   
    rs1.close
    set rs1=nothing

%>

 
 

#11



  
  
     当前位置 
      登录 >> 首页 >> 任务管理 >> 任务定义 >> 修改任务     
  





  
  
    
      
        
          说明:系统可创建20项任务
        
        
        
           
        
        
          
  <%if h_error_txt<>"" then%>
     
    错误:

      
<%=listerror(h_error_txt)%>

  <%end if%>

        
        
           
        
    
     bordercolor="d7e3ff" >
      
      
        
            >>> 任务修改
          
        
          
            任务名称:

          
            " size="50">
            ">
">
  
              ">

            *
        


        
          
            任务类型:

          
            
              文件分发
              >补丁分发
              >消息通知
              >控制执行脚本
                                    

          
        


        
          任务内容:

          <%=TskContent%>
  
          
        
        
          (如果是文件或

            补丁请写文件

            或补丁名称)
        

   



#12



          需要上传的个数:
              value="1" size="15" >
                Onclick="setid();" value="设定" >
           
        
        
          文件保存路径:
          
            (默认)
           
        
        
          选择上传的文件:
             
           
        
        
          启动任务:
          
停止
  >
启用 
           
        

        
          是否重复执行:
          
           
   >是
           
        
        
          开始执行时间:
          " size="30">
           
        
        
          分发的IP范围:
          ">
          多个段以

            “;”相隔
        
        
          不分发IP范围:
          ">
          
        
          操作系统:
          " size="30">
            (各操作系统与“/”相隔,例:2000/xp)
           
        
        
          备注一:
          <%=beizhu1%>
           
        
        
          
            备注二:

          <%=beizhu2%>
           
        
        
          
            备注三:

          <%=beizhu3%>
           
        
        
          
            
 
         
 
          
        
      
    
  
  
    
    
  
  
    
    
  



<%
end if%>

#13


该回复被版主删除

#14


谢谢大家!谢谢yxhzj(余华),我已经改好了:)

推荐阅读
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 延迟注入工具(python)的SQL脚本
    本文介绍了一个延迟注入工具(python)的SQL脚本,包括使用urllib2、time、socket、threading、requests等模块实现延迟注入的方法。该工具可以通过构造特定的URL来进行注入测试,并通过延迟时间来判断注入是否成功。 ... [详细]
  • 本文介绍了如何使用Power Design(PD)和SQL Server进行数据库反向工程的方法。通过创建数据源、选择要反向工程的数据表,PD可以生成物理模型,进而生成所需的概念模型。该方法适用于SQL Server数据库,对于其他数据库是否适用尚不确定。详细步骤和操作说明可参考本文内容。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
  • Python SQLAlchemy库的使用方法详解
    本文详细介绍了Python中使用SQLAlchemy库的方法。首先对SQLAlchemy进行了简介,包括其定义、适用的数据库类型等。然后讨论了SQLAlchemy提供的两种主要使用模式,即SQL表达式语言和ORM。针对不同的需求,给出了选择哪种模式的建议。最后,介绍了连接数据库的方法,包括创建SQLAlchemy引擎和执行SQL语句的接口。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
author-avatar
夏y儿
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有