formdata上传文件快吗|前端上传文件的几种方法

|

❶ 百度云虚拟主机ajax上传文件太慢,正常post上传速度快

对于你的这种情况,可能与你所使用的上传工具有关。 对于虚拟机与主机之间文件的共享,你可以使用FTP,只要在主机或虚拟主机上建立一个FTP服务器,就可以实现二者之间的文件共享了;另外,如果你所使用的虚拟机是VMware的话,你也可以选择在Linux环境下安装一下Vmware-tools来实现虚拟机与主机之间的文件共享。

❷ 你好,构造FormData 上传文件(用html5分块了的)用ajax提交数据(不用jquery),服务器端怎么读取数据啊

AJAX上传的是POST方式,记得加上multipart/form-data

❸ 如何用FormData实现多文件上传

可以用数组形式,我贴代码了html 部分<li class="list-group-item disabled select-file-div"><input type="file" multiple="true" class="input-sm clear-l-r-padding select-file" data-uploadtype="photo"/></li>js部分var i,data = new FormData();…for (i = 0; i < $('.select-file').files.length; i++) {data.append('file[]', this.files[i]);}…//省略代码若干…在选择完成后调用下面$.ajax$.ajax({url: 'url'type: "POST",data: data,dataType: 'json',processData: false,// *重要,确认为falsecontentType: false,beforeSend: function () {… },success: function (res) {console.log(res);},error: function (res) {…}});php 部分 接收数组$fileField='file';$name = $_FILES$fileField;$tmp_name = $_FILES[$fileField]['tmp_name'];$size = $_FILES[$fileField]['size'];$error = $_FILES[$fileField]['error'];/ 如果是多个文件上传则$file["name"]会是一个数组 /if(is_Array($name)){$errors=array();/多个文件上传则循环处理 , 这个循环只有检查上传文件的作用,并没有真正上传 /for($i = 0; $i < count($name); $i++){/设置文件信息 /if($this->setFiles($name[$i],$tmp_name[$i],$size[$i],$error[$i] )) {if(!$this->checkFileSize() || !$this->checkFileType()){$errors[] = $this->getError();$return=false; }}else{$errors[] = $this->getError();$return=false;}/ 如果有问题,则重新初使化属性 /if(!$return)$this->setFiles();}

❹ formdata怎么上传文件和数据

html代码<!doctype html><html><head><meta charset="utf-8"><title>多文件上传</title><script src="jquery.js"></script><script>$(function(){$("#btn").click(function(){var formData = new FormData();for(var i=0; i<$('#file')[0].files.length;i++){formData.append('file[]', $('#file')[0].files[i]);}$.ajax({url: "test.php",type: "POST",processData: false,contentType: false,data: formData,success: function(d){}});});})</script></head><body><form><input type="file" multiple id="file" name="file[]" ><input type="button" id="btn" value="提交"/></form></body>test.PHP代码:<?phpvar_mp($_FILES);die();

❺ 利用formdata实现文件上传 可是为什么获取到的form是空的

我这块主要是后台写的时候需要用到的html里面的input的name,所以我写的name需要和后台写的是一样的,才能获取到正确的数据插一句题外话, 前端要是看不懂后台的代码,太吃亏了。。。

❻ 火狐浏览器支持通过ajax使用formdata对象无刷新上传文件吗

这个没有问题,常用的几个浏览器都是支持的有两种方式可以创建一个FormData对象:①创建一个空的FormData对象,然后使用append()方法向该对象里添加字段②使用HTML表单来初始化一个FormData对象

❼ 如何使用multipart/form-data格式上传文件

Multipart/form-data其实就是浏览器用表单上传文件的方式。最常见的情境是:在写邮件时,向邮件后添加附件,附件通常使用表单添加,也就是用multipart/form-data格式上传到服务器。表单形式上传附件具体的步骤是怎样的呢?首先,客户端和服务器建立连接(TCP协议)。第二,客户端可以向服务器端发送数据。因为上传文件实质上也是向服务器端发送请求。第三,客户端按照符合“multipart/form-data”的格式向服务器端发送数据。 既然Multipart/form-data格式就是浏览器用表单提交数据的格式,我们就来看看文件经过浏览器编码后是什么样子。点击“Browse…”分别选择“unknow.gif”和“unknow1.gif”文件,点击“submit”按纽后,文件将被上传到服务器。下面是服务器收到的数据:服务器收到的数据这是一个POST请求。所以数据是放在请求体内,而不是请求头内。这行指出这个请求是“multipart/form-data”格式的,且“boundary”是 “—————————7db15a14291cce”这个字符串。不难想象,“boundary”是用来隔开表单中不同部分数据的。例子中的表单就有 2 部分数据,用“boundary”隔开。“boundary”一般由系统随机产生,但也可以简单的用“————-”来代替。实际上,每部分数据的开头都是由"–" + boundary开始,而不是由 boundary 开始。仔细看才能发现下面的开头这段字符串实际上要比 boundary 多了个 “–” 紧接着 boundary 的是该部分数据的描述。接下来才是数据。“GIF”gif格式图片的文件头,可见,unknow1.gif确实是gif格式图片。在请求的最后,则是 "–" + boundary + "–" 表明表单的结束。 需要注意的是,在html协议中,用 “\r\n” 换行,而不是 “\n”。下面的代码片断演示如何构造multipart/form-data格式数据,并上传图片到服务器。//—————————————// this is the demo code of using multipart/form-data to upload text and photos.// -use WinInet APIs.////// connection handlers.//HRESULT hr;HINTERNET m_hOpen;HINTERNET m_hConnect;HINTERNET m_hRequest;//// make connection.//…//// form the content.//std::wstring strBoundary = std::wstring(L"——————");std::wstring wstrHeader(L"Content-Type: multipart/form-data, boundary=");wstrHeader += strBoundary;HttpAddRequestHeaders(m_hRequest, wstrHeader.c_str(), DWORD(wstrHeader.size()), HTTP_ADDREQ_FLAG_ADD);//// "std::wstring strPhotoPath" is the name of photo to upload.////// uploaded photo form-part begin.//std::wstring strMultipartFirst(L"–");strMultipartFirst += strBoundary;strMultipartFirst += L"\r\nContent-Disposition: form-data; name=\"pic\"; filename=";strMultipartFirst += L"\"" + strPhotoPath + L"\"";strMultipartFirst += L"\r\nContent-Type: image/jpeg\r\n\r\n";//// "std::wstring strTextContent" is the text to uploaded.////// uploaded text form-part begin.//std::wstring strMultipartInter(L"\r\n–");strMultipartInter += strBoundary;strMultipartInter += L"\r\nContent-Disposition: form-data; name=\"status\"\r\n\r\n";std::wstring wstrPostDataUrlEncode(CEncodeTool::Encode_Url(strTextContent));// add text content to send.strMultipartInter += wstrPostDataUrlEncode;std::wstring strMultipartEnd(L"\r\n–");strMultipartEnd += strBoundary;strMultipartEnd += L"–\r\n";//// open photo file.//// ws2s(std::wstring)// -transform "strPhotopath" from unicode to ansi.std::ifstream *pstdofsPicInput = new std::ifstream;pstdofsPicInput->open((ws2s(strPhotoPath)).c_str(), std::ios::binary|std::ios::in);pstdofsPicInput->seekg(0, std::ios::end);int nFileSize = pstdofsPicInput->tellg();if(nPicFileLen == 0){return E_ACCESSDENIED;}char *pchPicFileBuf = NULL;try{

❽ 前端上传文件的几种方法

1.表单上传

最传统的图片上传方式是form表单上传,使用form表单的input[type=”file”]控件,打开系统的文件选择对话框,从而达到选择文件并上传的目的。

form表单上传

表单上传需要注意以下几点:

(1).提供form表单,method必须是post。

(2).form表单的enctype必须是multipart/form-data。

javascript学习交流群:453833554

enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码。默认地,表单数据会编码为 "application/x-www-form-urlencoded"。就是说,在发送到服务器之前,所有字符都会进行编码。HTML表单如何打包数据文件是由enctype这个属性决定的。enctype有以下几种取值:

application/x-www-form-urlencoded:在发送前编码所有字符(默认)(空格被编码为’+’,特殊字符被编码为ASCII十六进制字符)。

multipart/form-data:不对字符编码。在使用包含文件上传控件的表单时,必须使用该值。

text/plain:空格转换为 “+” 加号,但不对特殊字符编码。

默认enctype=application/x-www-form-urlencoded,所以表单的内容会按URL规则编码,然后根据表单的提交方法:

method=’get’ 编码后的表单内容附加在请求连接后,

method=’post’ 编码后的表单内容作为post请求的正文内容。

❾ 通过formdata 上传文件,上传速度最高只有500多k每秒 ,实际网络上传速度有1.5M每秒

并不是实际的上传带宽可以全部利用的,大部分应用会主动限制传输带宽的。

❿ 我用formdata进行ajax上传文件,第一次上传肯的是报错

般说,段错误指访问内存超系统所给程序内存空间通值由gdtr保存四吧位寄存器其三内二位保存由 指向 gdt表一三位容保存相应于gdt标三位包括程序否内存及程序cpu运行级别,指向gdt由陆四位单位表 张表保存着程序运行代码段及数据段起始址及与相应段限页面交换程序运行级别内存粒度等等信息旦程序发越界 访问cpu产相应异保护于segmentation fault现


赞 (0)