文件上传需要使用哪个对象|PHP 如何用ajax做文件上传

1. 如何将文件上传到EXCEL

可以编辑超链接,使之成为相对路径而不是决定路径。当然,excel拷贝过去后,文档1也要拷贝过去,并且相对路径不变。excel中还可以直接插入word, pdf…..等很多格式的对象。你可以把文档1直接插入进去(例如插入到sheet2的某个格子)然后在sheet1里面的超链接可以指向这个格子而不是指向文件

2. asp文件上传的办法

ASP文件上传原理分析及实现实例摘要:在基于/的应用环境中,上传各种类型的文件一直是困扰用户文件管理应用的难题之一。在HTTP中上传文件有三种机制:RFC1867,PUT和WebDAV。常用的实现方法是利用在RFC1867中引入的一个新类型:File以及ADO Stream对象。本文对上述上传方法及实现原理作了论述,并给出了具体解决实例。ASP FILE对象 当前,基于/模式的应用比较流行。当用户需要将文件传输到上时,常用方法之一是运行FTP并将每个用户的FTP默认目录设为用户的Web主目录,这样用户就能运行FTP客户程序并上传文件到指定的 Web目录。这就要求用户必须懂得如何使用FTP客户程序。因此,这种解决方案仅对熟悉FTP且富有经验的用户来说是可行的。 如果我们能把文件上传功能与Web集成,使用户仅用Web就能完成上传任务,这对于他们来说将是非常方便的。但是,一直以来,由于File System Object的仅能传送文本文件的局限,所以ASP最大的难题就是文件上传问题。下面介绍的就是如何在基于HTTP协议的网页中实现文件的上传。 一.通过HTTP上传的三种机制 通过HTTP上传有三种机制:RFC1867, PUT 和 WebDAV。 PUT 是在HTTP 1.1引入了一个新的HTTP动词。当web收到一个HTTP PUT和对象名字,它将会验证用户,接收HTTP流的内容,并把它直接存入web。由于这可能会对一个web站点造成破坏,并且还会失去HTTP最大的优势:可编程性。在PUT的情况下,自己处理请求:没有空间让CGI或者ASP应用程序介入。唯一让你的应用程序捕获PUT的方法是在低层操作,ISAPI过滤层。由于相应的原因,PUT的应用很有限。 而WebDAV允许web内容的分布式认证与翻译。它引入了几种新的HTTP动词,允许通过HTTP上传,锁定/解锁,登记/检验web内容。Office 2000中的"Save to web" 就是通过WebDAV来实现的。如果你所感兴趣的一切都是上传内容,WebDAV应用得非常出色,它解决了很多问题。 然而,如果你需要在你的web应用程序里面上传文件,WebDAV对你就毫无用处可言。象HTTP PUT一样,那些WebDAV的动词是被解释的,而不是web应用程序。你需要工作在ISAPI过滤层来访问WebDAV的这些动词,并在你的应用程序中解释内容。 RFC1867 (http://www.ietf.org/rfc/rfc1867.txt) 最终被W3C在HTML3.2中接受前,是作为一种建议标准。它是一种非常简单但是功能很强大的想法:在表单字段中定义一个新类型。 <INPUT TYPE="FILE"> 并且在表单本身加入了不同的编码方案,不再使用典型的:<FORM ACTION="formproc.asp" METHOD="POST"> 而是使用:<FORM ACTION="formproc.asp" METHOD="POST" ENCTYPE="multipart/form-data"> 这种编码方案在传送大量数据的时候,比起缺省的"application/x-url-encoded"表单编码方案,显得效率要高得多。URL编码只有很有限的字符集,使用任何超出字符集的字符,必须用'%nn'代替,这里的nn表示相应的2个十六进制数字。例如,即使是普通的空格字符也要用'%20'代替。而RFC1867使用多部分MIME编码,就象通常在e-mail消息中看到的那样,不编码来传送大量数据,而只是在数据周围加上很少的简单但实用的头部。主要的厂商都采用了建议的"浏览…"按钮,用户能很容易的使用本地"打开文件…" 对话框选择要上传的文件。 RFC1867仍然将大多数文件上传的灵活方法留给了你的web应用程序。PUT用得很有限。WebDAV对内容的作者很有用,比如FrontPage用户,但是对想在web应用程序中加入文件上传的web开发者来说很少用到。因此,RFC1867是在web应用程序中加入文件上传的最好的办法。 在实际应用中,免费提供了Posting Acceptor 。ASP不懂"multipart/form-data" 编码方案。取而代之,提供了Posting Acceptor ,Posting Acceptor是一种在上传完成后,接受REPOST到一个ASP页的ISAPI应用程序。 Software Artisans的SA-FileUp是最早的商业Active Server之一。几经改进,现在作为一个纯粹的ASP存在。 二.基于ASP的文件上传实现原理分析 基本原理是:采用ADO Stream对象的BinaryRead方法将FORM中的所有数据读出,从中截取出所需的文件数据,以二进制文件方式存盘。 下面是上传文件页面的一个例子(upload.htm):<html><body><form name="Upload" Method="Post" Enctype="multipart/form-data" Action="Upload.asp"><input type="file" name="FileName"><INPUT TYPE="Submit" VALUE="Upload"></TD></form></body></html>程序中使用了文件对象,这样在Upload.asp中采用BinaryRead方法读来的原始数据就不仅仅是选择的文件本身的数据,还包含该文件在用户硬盘上的路径、类型、提交页面的表单等相关信息的描述,这样我们就需从中提取出文件的具体内容。根据分析,数据的头部信息与数据的分界线是两对回车换行符,尾部也有分隔信息,我们可以采用类似以下的方法获取文件数据。Dim FormData.FormSize,DataStart,CLStr,DivStrFormSize=Request.TotalBytesFormData=Request.BinaryRead(FormSize)CLStr=ChrB(13)&ChrB(10)DataStart=InStrB(FormData.CLStr&CLStr)+4'4是两对回车换行符的长度DivStr=LeftB(FormData,InStrB(FormData,CLStr)-1)DataSize=InStrB(DataStart+1,FormData,DivStr)-DataStart-2FormData=MidB(FormData,DataStart,DataSize)FormData就是文件的内容了。 中间根据需要,可进行相应的处理。最后的工作就是将文件保存了。保存的方法可以有两种:一种是利用VB或VC之类程序中的二进制文件操作方法,在工程中加入适当的类型库,最终编译成DLL文件,使用时再将该DLL文件注册就可以了。文件存贮程序如下:Public Function SaveFile(Pathname As String) As String Dim objContext As ObjectContext Dim objRequest As Request Set objContext=GetObjectContext() Set objRequest=objContext("Request") '以下的一段代码是进行文件存贮的有关操作 Dim FormData() As Byte,CLStr,DivStr Dim DataStart As Long,DataSize As Long DataSize=objRequest.TotalBytes Redim FormData(DataSize-1) FormData=objRequest.BinaryRead(DataSize) CLStr=ChrB(13) & ChrB(10) DataStart=InStrB(FormData,CLStr & CLStr)+4 DivStr=LeftB(FormData,InStrB(FormData,CLStr)-1) DataSize=InStrB(DataStart+1,FormData,DivStr)-DataStart-2 FormData=MidB(FormData,DataStart,DataSize) '创建一个二进制文件并将FormData写入其中 Open Pathname For Binary As 1 Put #1,,FormData Close #1 SaveFile="OK!" End Function第二种方法是利用ADO STREAM中提供的二进制文件操作方法来完成,保存文件的语句是: StreamOBJ.SaveToFile (fileName,2)。在 这种操作中,我们可以将有关的操作存放在一个类文件中,在应用时,直接将该类文件包含在ASP程序中就可以了。具体处理方法,请参阅有关介绍。 三.文件上传实现方法实例 实现文件上传可使用或无方式。对于类,比如说microsoft posting acceptor(简称mpa),就是公司发布的一个免费,这类的安装也比较方便。对于的mpa,运行它的安装文件就可以了。而一般的dll形式的,我们则需要进行注册。例如,要使用aspcnUP.dll,只要在Window 2000上执行regsvr32 [path\]aspcnUP.dll,系统出现注册成功的信息提示就可以使用该了;对于无类,如http://www.5xsoft.com/的无上传类-upload_5xsoft。在使用时,只要在处理程序中包含以下的语句就可以了:<!–#include FILE="upload.inc"–>set upload=new upload_5xSoft '建立上传对象有关的属性与操作方法,请参阅该的使用手册。 下面是詀spcnUP.dll为例,上传部分类型文件的源代码(upload.asp):<% @ language="vbscript" Set fileUP=Server.CreateObject("aspcn.Upload") fileUP.Maxsize=200000 fileUP.Path="d:\upfile" fileUP.Upload For i=0 to fileUP.Count fieldname=fileUP.FieldName(i) If fileUP.FileType(fieldname)="zip" Or ileUP.FileType(fieldname)="rar" Then fileUP.Save fieldname End If Next Set fileUP=Nothing%> 四.结束语 应用模式还在快速地发展着,在ASP.NET中,已经内置了文件上传的功能,使用非常简单方便。作为一种全新的技术,ASP.NET并不只是ASP的简单升级,它是一个用于Web开发的全新框架,其中包含了许多新的特性。ASP.NET提供了更易于编写、结构更清晰的代码,利用这些代码我们将会更容易地进行再利用和共享,从而开发出更多更实用的程序来。

3. C#通过对象接收上传文件

UploadFile这个是什么类?系统中没有这个

4. js 上传文件用什么对象

这个问题要看浏览器了,在ie6,7,8,9中js是没法上传文件的,只能通过form提交的方式来上传,如果是目前最新的支持html5的浏览器,提供了js的上传接口是可以用的,具体方式见链接内容http://newhtml.net/html5-files-uploads/

5. 开了一个iis服务器,请问怎么实现文件上传功能

通过客户端上传文件到FTP服务器。很多客户端工具,ftp客户端,可以到【5分享】找下。

6. PHP 如何用ajax做文件上传

通过传统的form表单提交的方式上传文件:[html] view plain 在CODE上查看代码片派生到我的代码片<form id= "uploadForm" action= "http://localhost:8080/cfJAX_RS/rest/file/upload" method= "post" enctype ="multipart/form-data"><h1 >测试通过Rest接口上传文件 </h1><p >指定文件名: <input type ="text" name="filename" /></p><p >上传文件: <input type ="file" name="file" /></p><p >关键字1: <input type ="text" name="keyword" /></p><p >关键字2: <input type ="text" name="keyword" /></p><p >关键字3: <input type ="text" name="keyword" /></p><input type ="submit" value="上传"/></form>不过传统的form表单提交会导致页面刷新,但是在有些情况下,我们不希望页面被刷新,这种时候我们都是使用Ajax的方式进行请求的。Ajax的方式进行请求:[javascript] view plain 在CODE上查看代码片派生到我的代码片$.ajax({url : "http://localhost:8080/STS/rest/user",type : "POST",data : $( '#postForm').serialize(),success : function(data) {$( '#serverResponse').html(data);},error : function(data) {$( '#serverResponse').html(data.status + " : " + data.statusText + " : " + data.responseText);}});通常我们提交(使用submit button)时,会把form中的所有表格元素的name与value组成一个queryString,提交到后台。这用jQuery的方法来说,就是serialize。通过$('#postForm').serialize()可以对form表单进行序列化,从而将form表单中的所有参数传递到服务端。但是上述方式,只能传递一般的参数,上传文件的文件流是无法被序列化并传递的。不过如今主流浏览器都开始支持一个叫做FormData的对象,有了这个FormData,我们就可以轻松地使用Ajax方式进行文件上传了。关于FormData及其用法FormData是什么呢?我们来看看Mozilla上的介绍。XMLHttpRequest Level 2添加了一个新的接口FormData.利用FormData对象,我们可以通过JavaScript用一些键值对来模拟一系列表单控件,我们还可以使用XMLHttpRequest的send()方法来异步的提交这个"表单".比起普通的ajax,使用FormData的最大优点就是我们可以异步上传一个二进制文件.所有主流浏览器的较新版本都已经支持这个对象了,比如Chrome 7+、Firefox 4+、IE 10+、Opera 12+、Safari 5+。参见:https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequest/FormDataConstructorFormData()想得到一个FormData对象:var formdata = new FormData();W3c草案提供了三种方案来获取或修改FormData。方案1:创建一个空的FormData对象,然后再用append方法逐个添加键值对:var formdata = new FormData();formdata.append("name", "呵呵");formdata.append("url", "http://www..com/");方案2:取得form元素对象,将它作为参数传入FormData对象中!var formobj = document.getElementById("form");var formdata = new FormData(formobj);方案3:利用form元素对象的getFormData方法生成它!var formobj = document.getElementById("form");var formdata = formobj.getFormData()MethodFormData.append本方法用于向已存在的键添加新的值,如该键不存在,新建之。语法formData.append(name, value);formData.append(name, value, filename);注: 通过 FormData.append()方法赋给字段的值若是数字会被自动转换为字符(字段的值可以是一个Blob对象,一个File对象,或者一个字符串,剩下其他类型的值都会被自动转换成字符串).参数解释name键 (key), 对应表单域value表单域的值filename (optional)The filename reported to the server (a USVString), when a Blob or File is passed as the second parameter. The default filename for Blob objects is "blob".FormData.delete将一对键和值从 FormData 对象中删除。formData.delete(username);FormData.get返回给定键的第一个值formData.append('username', 'Justin');formData.append('username', 'Chris');formData.get(username); // "Justin"FormData.getAll返回给定键的所有值formData.append('username', 'Justin');formData.append('username', 'Chris');formData.getAll(username); // ["Justin", "Chris"]FormData.has检查是否包含给定键,返回 true 或 falseformData.has(username);FormData.set设置给定键的值formData.set(name, value);formData.set(name, value, filename);浏览器兼容情况来自 MDN:DesktopFeatureChromeFirfox(Gecko)Intenet ExplorerOperaSafariBasic support7+4.0(2.0)10+12+5+append with filename(Yes)22.0(22.0)???delete, get, getAll, has, setBehind FlagNot supportedNot supported(Yes)Not supportedMobileFeatureAndroidChrome AndroidFirfox Mobile (Gecko)Firfox OS (Gecko)IE MobileOpera MobileSafari MobileBasic support3.0?4.0(2.0)1.0.1?12+?append with filename??22.0(22.0)1.2???delete, get, getAll, has, set(Yes)(Yes)Not supportedNot supportedNot supported(Yes)Not supported2015年06月04日发布Ajax通过FormData上传文件1.使用<form>表单初始化FormData对象方式上传文件HTML代码<form id="uploadForm" enctype="multipart/form-data"><input id="file" type="file" name="file"/><button id="upload" type="button">upload</button></form>javascript代码$.ajax({url: '/upload',type: 'POST',cache: false,data: new FormData($('#uploadForm')[0]),processData: false,contentType: false}).done(function(res) {}).fail(function(res) {});这里要注意几点:processData设置为false。因为data值是FormData对象,不需要对数据做处理。<form>标签添加enctype="multipart/form-data"属性。cache设置为false,上传文件不需要缓存。contentType设置为false,不设置contentType值,因为是由<form>表单构造的FormData对象,且已经声明了属性enctype="multipart/form-data",所以这里设置为false。上传后,服务器端代码需要使用从查询参数名为file获取文件输入流对象,因为<input>中声明的是name="file"。如果不是用<form>表单构造FormData对象又该怎么做呢?2.使用FormData对象添加字段方式上传文件HTML代码<div id="uploadForm"><input id="file" type="file"/><button id="upload" type="button">upload</button></div>这里没有<form>标签,也没有enctype="multipart/form-data"属性。javascript代码var formData = new FormData();formData.append('file', $('#file')[0].files[0]);$.ajax({url: '/upload',type: 'POST',cache: false,data: formData,processData: false,contentType: false}).done(function(res) {}).fail(function(res) {});这里有几处不一样:append()的第二个参数应是文件对象,即$('#file')[0].files[0]。contentType也要设置为‘false’。从代码$('#file')[0].files[0]中可以看到一个<input type="file">标签能够上传多个文件,只需要在<input type="file">里添加multiple或multiple="multiple"属性。3.服务器端读文件从Servlet 3.0 开始,可以通过 request.getPart() 或 request.getPars() 两个接口获取上传的文件。

7. 在DW中进行网页表单制作 对于用户上传文件 应该用什么表单对象

<formaction=""method="get"class="layui-form"enctype="multipart/form-data"><inputtype="file"name="image"><inputtype="submit"class="layui-btn"value="搜索"></form>

表单对象应该使用文件类型 type = 'file'

望采纳

8. 如何用FileItem来实现文件上传

首先你要有jar包:commons-fileupload-1.3.1.jar和commons-io-2.2.jar两个包!当你要上传时:<form action="./UploadServlet1" enctype="multipart/form-data" method="post">文本1:<input type="text" name="text1" value="文本1"><br>文件2:<input type="text" name="text2" value="文本2"><br>文件1:<input type="file" name="file1"><br>文件2:<input type="file" name="file2"><br>文件2:<input type="file" name="file3"><br><input type="submit" value="开始上传"></form>当form表单提交时会有上传文件和非上传文件所以在servlet中,第一步要进行判断表单的提交方式boolean isMultipart = ServletFileUpload.isMultipartContent(request);if(!isMultipart){throw new RuntimeException("请检查您的表单的enctype属性,确定是multipart/form-data");}第二步要对数据进行接收:DiskFileItemFactory factory = new DiskFileItemFactory();//构造好一个DiskFileItemFactory的对象ServletFileUpload uploader = new ServletFileUpload(factory);//解析请求List<FileItem> items = null;try {items = uploader.parseRequest(request);//将请求解析,并将数据封装在FileItem的对象中,并将这些对象装入List中返回} catch (FileUploadException e) {e.printStackTrace();}其次要对表单提交的内容进行是否为上传文件的分类处理:利用isFormField()来进行判断for(FileItem item : items){if (item.isFormField()) {// 处理普通表单域String field = item.getFieldName();// 表单域名String value = item.getString("UTF-8");System.out.println("普通表单");} else {// 将临时文件保存到指定目录String fileName = item.getName();// 文件名称fileName = UUID.randomUUID().toString()+"_"+FilenameUtils.getName(fileName);String extension = FilenameUtils.getExtension(fileName);String filepath = "您希望保存的目录/" + fileName;item.write(new File(filepath));//将路径执行保存}}这样就完成了文件上传,希望能帮到你。


赞 (0)