精华内容
下载资源
问答
  • 实例简介】android ftp 上传文件 demo,支持android2.2【实例截图】【核心代码】Ftp└── Ftp├── AndroidManifest.xml├── bin│ ├── AndroidManifest.xml│ ├── classes│ │ ├── classes.dex│ │...

    【实例简介】

    android ftp 上传文件 demo,支持android2.2

    【实例截图】

    【核心代码】

    Ftp

    └── Ftp

    ├── AndroidManifest.xml

    ├── bin

    │   ├── AndroidManifest.xml

    │   ├── classes

    │   │   ├── classes.dex

    │   │   ├── com

    │   │   │   └── le2010

    │   │   │   └── ftp

    │   │   │   ├── Ftp.class

    │   │   │   ├── MainActivity$1.class

    │   │   │   ├── MainActivity.class

    │   │   │   ├── R$attr.class

    │   │   │   ├── R$dimen.class

    │   │   │   ├── R$drawable.class

    │   │   │   ├── R$id.class

    │   │   │   ├── R$layout.class

    │   │   │   ├── R$menu.class

    │   │   │   ├── R$string.class

    │   │   │   ├── R$style.class

    │   │   │   └── R.class

    │   │   ├── Ftp.apk

    │   │   └── resources.ap_

    │   ├── classes.dex

    │   ├── dexedLibs

    │   │   ├── android-support-v4-42e5ad8e56acfba537456b8e84778a5d.jar

    │   │   └── commons-net-3.0.1-0bdb5ff9d1906e4223ebc2e15a48c528.jar

    │   ├── Ftp.apk

    │   ├── jarlist.cache

    │   ├── res

    │   │   ├── drawable-hdpi

    │   │   │   └── ic_launcher.png

    │   │   ├── drawable-mdpi

    │   │   │   └── ic_launcher.png

    │   │   ├── drawable-xhdpi

    │   │   │   └── ic_launcher.png

    │   │   └── drawable-xxhdpi

    │   │   └── ic_launcher.png

    │   └── resources.ap_

    ├── default.properties

    ├── gen

    │   └── com

    │   └── le2010

    │   └── ftp

    │   └── R.java

    ├── ic_launcher-web.png

    ├── libs

    │   ├── android-support-v4.jar

    │   └── commons-net-3.0.1.jar

    ├── proguard-project.txt

    ├── project.properties

    ├── res

    │   ├── drawable-hdpi

    │   │   └── ic_launcher.png

    │   ├── drawable-mdpi

    │   │   └── ic_launcher.png

    │   ├── drawable-xhdpi

    │   │   └── ic_launcher.png

    │   ├── layout

    │   │   └── activity_main.xml

    │   ├── menu

    │   │   └── main.xml

    │   ├── values

    │   │   ├── dimens.xml

    │   │   ├── strings.xml

    │   │   └── styles.xml

    │   └── values-v11

    │   └── styles.xml

    └── src

    └── com

    └── le2010

    └── ftp

    ├── Ftp.java

    └── MainActivity.java

    29 directories, 45 files

    展开全文
  • 文件上传组件 Uploadify-3.1-Demo实例详解
  • 下面小编就为大家带来一篇Java Servlet简单实例分享(文件上传下载demo)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 实例VS2010代码 dojo_iframe无刷新上传文件demo.rar dojo_iframe无刷新上传文件demo.rar dojo_iframe无刷新上传文件demo.rar dojo_iframe无刷新上传文件demo.rar dojo_iframe无刷新上传文件demo.rar
  • Android和FTP服务器交互,上传下载文件实例demo

    万次阅读 热门讨论 2013-09-21 08:48:38
    于是帮他写了个上传,下载文件demo 主要是 跟FTP服务器打交道~因为这个东东有免费的可以身亲哈 1. 首先申请一个免费的FTP空间: http://www.3v.cm/host/ 我这边注册了个账号,密码分别为: chenww chenww ...

    今天同学说他备份了联系人的数据放在一个文件里,想把它存到服务器上,以便之后可以进行下载恢复..于是帮他写了个上传,下载文件的demo

    主要是 跟FTP服务器打交道~因为这个东东有免费的可以身亲哈

     

    1. 首先申请一个免费的FTP空间:

    http://www.3v.cm/host/

    我这边注册了个账号,密码分别为:

    chenww

    chenww

     

    2. 查看FTP空间的地址(端口默认是21)

    FTP服务器: chenww.3vfree.us

    端口: 21

     

    3. Demo部分

     

    主Activity: FTPMainActivity

     

    <span style="color:#000000">package com.example.ftpdemo;
    
    import android.os.Bundle;
    import android.os.StrictMode;
    import android.app.Activity;
    import android.support.v4.widget.SimpleCursorAdapter.ViewBinder;
    import android.view.Menu;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.Toast;
    
    /**
     * 2013年09月20日21:28:51 测试demo
     * 
     * 1.文件上传到FTP服务器 
     * 2.从FTP服务器上下载文件
     * 
     * 所需jar包:commons-net-3.0.1.jar
     * 将commons-net-3.0.1.jar放于libs中
     * 
     * @author xiaoyaomeng
     * 
     */
    public class FTPMainActivity extends Activity implements OnClickListener {
    
    	//傻逼Buttons
    	private Button buttonUpLoad = null;
    	private Button buttonDownLoad = null;
    	
    	//FTP工具类
    	private FTPUtils ftpUtils = null;
    	
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_ftpmain);
    		
    		//获取控件对象
    		buttonUpLoad = (Button) findViewById(R.id.button_upload);
    		buttonDownLoad = (Button) findViewById(R.id.button_download);
    
    		//设置控件对应相应函数
    		buttonUpLoad.setOnClickListener(this);
    		buttonDownLoad.setOnClickListener(this);
    		
    		if (android.os.Build.VERSION.SDK_INT > 9) {
    		    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
    		    StrictMode.setThreadPolicy(policy);
    		}
    		
    		//初始化和FTP服务器交互的类
    		InitFTPServerSetting();
    	}
    
    	public void InitFTPServerSetting() {
    		// TODO Auto-generated method stub
    		ftpUtils = FTPUtils.getInstance();
    		boolean flag = ftpUtils.initFTPSetting("chenww.3vfree.us", 21, "chenww", "chenww");
    			
    	}
    
    	@Override
    	public boolean onCreateOptionsMenu(Menu menu) {
    		// Inflate the menu; this adds items to the action bar if it is present.
    		getMenuInflater().inflate(R.menu.ftpmain, menu);
    		return true;
    	}
    
    	@Override
    	public void onClick(View v) {
    		// TODO Auto-generated method stub
    		switch (v.getId()) {
    							case R.id.button_upload: {
    								//上传文件
    								
    							}
    								break;
    							case R.id.button_download: {
    								//下载文件
    								
    							}
    								break;
    							default:
    								break;
    					
    			}
    	}
    }</span>
    
    

     

     

     

     

     

    工具类:FTPUtils

     

     

    <strong>package com.example.ftpdemo;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.net.SocketException;
    
    import org.apache.commons.net.ftp.FTP;
    import org.apache.commons.net.ftp.FTPClient;
    import org.apache.commons.net.ftp.FTPFile;
    import org.apache.commons.net.ftp.FTPReply;
    
    import android.R.bool;
    
    /**
     * 2013年09月20日21:38:04
     * 
     * 用于Android和FTP服务器进行交互的工具类
     * 
     * @author xiaoyaomeng
     *
     */
    public class FTPUtils {
    	private FTPClient ftpClient = null;
    	private static FTPUtils ftpUtilsInstance = null;
    	private String FTPUrl;
    	private int FTPPort;
    	private String UserName;
    	private String UserPassword;
    	
    	private FTPUtils()
    	{
    		ftpClient = new FTPClient();
    	}
    	/*
    	 * 得到类对象实例(因为只能有一个这样的类对象,所以用单例模式)
    	 */
    	public  static FTPUtils getInstance() {
    		if (ftpUtilsInstance == null)
    		{
    			ftpUtilsInstance = new FTPUtils();
    		}
    		return ftpUtilsInstance;
    	}
    	
    	/**
    	 * 设置FTP服务器
    	 * @param FTPUrl   FTP服务器ip地址
    	 * @param FTPPort   FTP服务器端口号
    	 * @param UserName    登陆FTP服务器的账号
    	 * @param UserPassword    登陆FTP服务器的密码
    	 * @return
    	 */
    	public boolean initFTPSetting(String FTPUrl, int FTPPort, String UserName, String UserPassword)
    	{	
    		this.FTPUrl = FTPUrl;
    		this.FTPPort = FTPPort;
    		this.UserName = UserName;
    		this.UserPassword = UserPassword;
    		
    		int reply;
    		
    		try {
    			//1.要连接的FTP服务器Url,Port
    			ftpClient.connect(FTPUrl, FTPPort);
    			
    			//2.登陆FTP服务器
    			ftpClient.login(UserName, UserPassword);
    			
    			//3.看返回的值是不是230,如果是,表示登陆成功
    			reply = ftpClient.getReplyCode();
    		
    			if (!FTPReply.isPositiveCompletion(reply))
    			{
    				//断开
    				ftpClient.disconnect();
    				return false;
    			}
    			
    			return true;
    			
    		} catch (SocketException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    			return false;
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    			return false;
    		}
    	}
    	
    	/**
    	 * 上传文件
    	 * @param FilePath    要上传文件所在SDCard的路径
    	 * @param FileName    要上传的文件的文件名(如:Sim唯一标识码)
    	 * @return    true为成功,false为失败
    	 */
    	public boolean uploadFile(String FilePath, String FileName) {
    		
    		if (!ftpClient.isConnected())
    		{
    			if (!initFTPSetting(FTPUrl,  FTPPort,  UserName,  UserPassword))
    			{
    				return false;
    			}
    		}
    		
    		try {
    			
    			//设置存储路径
    			ftpClient.makeDirectory("/data");
    			ftpClient.changeWorkingDirectory("/data");
    			
    			//设置上传文件需要的一些基本信息
    			ftpClient.setBufferSize(1024);  
    	        ftpClient.setControlEncoding("UTF-8"); 
    	        ftpClient.enterLocalPassiveMode();   
    	        ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
    	        
    	        //文件上传吧~
    	        FileInputStream fileInputStream = new FileInputStream(FilePath);
    	        ftpClient.storeFile(FileName, fileInputStream);
    	        
    	        //关闭文件流
    	        fileInputStream.close();
    	        
    	        //退出登陆FTP,关闭ftpCLient的连接
    	        ftpClient.logout();
    	        ftpClient.disconnect();
    	        
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    			return false;
    		}
    		return true;
    	}
    	
    	/**
    	 * 下载文件
    	 * @param FilePath  要存放的文件的路径
    	 * @param FileName   远程FTP服务器上的那个文件的名字
    	 * @return   true为成功,false为失败
    	 */
    	public boolean downLoadFile(String FilePath, String FileName) {
    		
    		if (!ftpClient.isConnected())
    		{
    			if (!initFTPSetting(FTPUrl,  FTPPort,  UserName,  UserPassword))
    			{
    				return false;
    			}
    		}
    		 
    		try {
    			// 转到指定下载目录
    			ftpClient.changeWorkingDirectory("/data");
    			
    			// 列出该目录下所有文件
    			FTPFile[] files = ftpClient.listFiles();
    			
    			// 遍历所有文件,找到指定的文件
    			for (FTPFile file : files) {
    				if (file.getName().equals(FileName)) {
    					//根据绝对路径初始化文件
    					File localFile = new File(FilePath);
    					
    					// 输出流
    					OutputStream outputStream = new FileOutputStream(localFile);
    					
    					// 下载文件
    					ftpClient.retrieveFile(file.getName(), outputStream);
    					
    					//关闭流
    					outputStream.close();
    				}
    			}
    			
    			//退出登陆FTP,关闭ftpCLient的连接
    	        ftpClient.logout();
    	        ftpClient.disconnect();
    	        
    	        
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		
    		return true;
    	}
    	
    }</strong>
    
    

     

     

     

    需要的Jar包下载地址:

    commons-net-3.0.1.jar

     

    展开全文
  • lottie动画demo实例

    2017-12-22 10:44:09
    之前的《Lottie动画demo上传demo有误,烦请大家移步至此,也可以评论告知下(实现android界面的动画,比加载image节省效率,可以制作酷炫的动画)
  • 文件上传demo

    2017-11-30 18:03:25
    spring mvc+bootstrap实现文件上传实例文件可拖拽选择和多选。下载即可使用无需任何修改
  • Java分片上传Minio分片上传Demo可用实例,直接导入使用
  • 效果DEMO:http://www.never-online.net/tutorial/js/upload/Javascript & DHTML 实例编程(教程)(三),初级实例篇—上传文件控件实例上章基本上把要交代的基本知识都说了一些,今天终于开始写代码了:D首先来做一...
  • dwr3.x demo 实例 例子

    2011-04-07 15:29:53
    dwr3.x的实例,其中有反转ajax,轮询,文件上传,下载,时钟,编辑,查询等实例
  • webupload demo webuploader实例

    热门讨论 2015-12-28 09:21:06
    webupload demo webuploader实例
  • 无刷新文件上传实例

    2008-05-30 11:37:10
    无刷新 文件 上传 实例
  • 小程序上传文件demo

    千次阅读 2018-09-05 18:33:25
    上传图片的方法 主要注意几个关键参数: url、filePath、name filePath 是一个本地的文件资源路径,可以通过wx.chooseImage来获取,下面会有具体的示例 upload: function () { var that = this; wx....

    上传图片的方法

    主要注意几个关键参数: url、filePath、name

    filePath 是一个本地的文件资源路径,可以通过wx.chooseImage来获取,下面会有具体的示例

    upload: function () {
        var that = this;
        wx.uploadFile({
          url: 'https://{{url}}/upload',
          filePath: that.data.imgSrc,
          name: 'tupian',
          formData: {
            'filename': 'test.png'
          },
          success: function (res) {
            var data = res.data
            if (data) {
                wx.showToast({
                    title: '上传成功',
                    icon: 'success',
                    duration: 2000
                })
                that.setData({
                  imgUrl: data
                })
            }
          }
        })
    }

    还可以显示文件上传的进度,具体用法见最下面的api

    后台接收文件的controller

    这里是java的代码,其它语言请自行编写

    @RequestMapping(value = "upload")
    @ResponseBody
    public String upload(
            @RequestParam(value = "tupian", required = true) MultipartFile file,
            HttpServletRequest request) {
        try {
            if (!file.isEmpty()) {
                String originalFilename = file.getOriginalFilename();
                String fileNameSuffix = originalFilename.substring(originalFilename.lastIndexOf("."));
    //                统一为小写
                fileNameSuffix = fileNameSuffix.toLowerCase();
                String uuid = UUID.randomUUID().toString();
                String tempFileName = uuid + fileNameSuffix;
    
    //              临时存储路径
                String videoPath = "/tmp/";
    //              暂存
                file.transferTo(new File(videoPath + tempFileName));
    //              临时文件
                File tempFile = new File(videoPath + tempFileName);
    
    //              上传至文件服务器,并得到对应的url
                String url = "";
                return url;
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
    
        }
        return null;
    }
    

    选择图片并得到它的资源路径

    choose: function () {
        var that = this;
        wx.chooseImage({
          count: 1, // 默认9
          sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
          sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
          success: function (res) {
            // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
            var tempFilePaths = res.tempFilePaths
            console.log(tempFilePaths)
            that.setData({
              imgSrc: tempFilePaths[0]
            })
          }
        })
      }
    

    wxml布局文件

    
    <button bindtap='choose' > 请选择一张图片 </button>
    <image src='{{imgSrc}}'></image>
    <button bindtap='upload' > 上传 </button>
    <image src='{{imgUrl}}'></image>
    

    页面的初始数据

    
    data: {
        imgSrc: '',
        imgUrl: ''
    }
    

    下面是官方提供的api文档

    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述


    展开全文
  • bootstrap文件上传demo

    2017-11-30 15:29:05
    spring mvc+bootstrap实现文件上传实例文件可拖拽选择和多选。
  • 用到了 ajaxfileupload.js + ashx, 其它没什么好说的, 算是留个底吧。
  • swfupload上传组件应用实例Demo

    千次下载 热门讨论 2009-01-12 13:42:38
    以前一直使用ASP.NET自带的FileUpload控件进行上传文件,发现经常出问题. 尽管在web.config文件中设置了maxRequestLength为很大,但还是不能上传大于2M的文件. 所有后来研究了下上传相关知识, 发现swfupload是一个不错...
  • phpexcel实例demo

    2019-02-18 15:03:14
    phpexcel实例demo,直接运行就可以用,内置一个上传文件,运行上传方法,导入excel文件数据到mysql数据库中。
  • 4.很多网上的fileupload.php文件,切片上传大于5M的成功,小于5m的失败,demo中的是已经经过优化。 5.demo中的php 还有 文件请配置适合自己框架的哦,给的demo都自己框架的,只需要把对应的替换掉即可。
  • 背景 平时工作中经常会遇到需要上传文件的情况,如果你用ant design 或者element ,...antd官网有手动上传demo:  在这里简单写一写实现,主要有 在jsx中引入Upload组件,将 fileList 作为props传入,fileList为...

     

    背景

    平时工作中经常会遇到需要上传文件的情况,如果你用ant design 或者element ,它们都提供了上传的组件。 我们分别来看一下element 和 antd 手动上传怎么处理:

    ant design 手动上传文件

    antd官网有手动上传的demo:  
    在这里简单写一写实现,主要有 在jsx中引入Upload组件,将 fileList 作为props传入,fileList为选择的文件列表,和 上传函数的实现。

    // jsx
     <div>
        <Upload fileList={this.state.fileList}>     // Upload 为上传组件
          <Button>
            <Icon type="upload" /> Select File
          </Button>
        </Upload>
        <Button onClick={this.handleUpload}>
            上传文件
        </Button>
    </div>
    //  handleUpload 的实现 使用 fetch 请求
    const handleUpload = () {
        const formData = new FormData();
        fileList.forEach((file) => {   // fileList 是要上传的文件数组
          formData.append('files[]', file);
        });
        
        fetch(url: 'http:just.a.url.demo', {
          method: 'POST',
          headers: {
                credentials: 'same-origin'
              // 'Content-Type': 'multipart/form-data'  // 不要加上这个文件类型说明
          },
          body: formData
                
        })
        .then(response => response.json())
        .catch(error => console.error('Error:', error))
        .then(response => console.log('Success:', response));
    }
    

    Element 手动上传文件

    element 和antd 不同,通过上传组件拿回的数据,element又封装了一层,所以传数据稍有不同。
    以下是简单实现:

    // template
    <el-upload 
        :file-list="fileList"
        :auto-upload="false">
        <el-button slot="trigger" type="primary">选择文件</el-button>
        <el-button @click="submitUpload">上传文件</el-button>
    </el-upload>
    //  上传实现
    
    const handleUpload = () {
        const formData = new FormData();
        fileList.forEach((file) => {        
            formData.append('files[]', file.raw);  // 这里与antd 不同的是,文件真正数据为 file.raw 
        });
        
        fetch(url: 'http:just.a.url.demo', {
          method: 'POST',
          headers: {
                credentials: 'same-origin'
              // 'Content-Type': 'multipart/form-data'  // 不要加上这个文件类型说明
          },
          body: formData
                
        })
        .then(response => response.json())
        .catch(error => console.error('Error:', error))
        .then(response => console.log('Success:', response));
    }
    

    想问几个问题:

    虽然可以找得demo把文件传输了出去,但是心里有几个问题,如下:

    1. 问什么传文件需要用FormData格式呢?传文件和传一般数据有什么不一样?

    从传文件的历史来回答传文件问什么需要FormData 格式。

    • file 形式

    在最开始的时候,文件上传的传统形式是使用 表单元素file。参照下面的代码:

      <form id="upload-form" action="upload.php" method="post" enctype="multipart/form-data" >
    
        <input type="file" id="upload" name="upload" /> <br />
    
        <input type="submit" value="Upload" />
    
      </form>

    它在chrome浏览器中是这个样子:

    选择文件之后,点击Upload 按钮,文件开始上传。

    • iframe形式

    使用form元素比较简单,但缺点也比较明显:上传同步、上传完成页面会刷新;
    在HTML5出现之前,想要实现文件异步上传,只能通过iframe+form实现;
    其原理是:文件上传时在页面中动态创建一个iframe元素和一个form元素,并将form元素的target属性指向动态创建iframe元素。当用户完成选择文件动作时,提交子页面中的 form。这时,iframe跳转,而父页面没有刷新。这使得上传结束后,服务器处理结果返回到动态iframe窗口而没有刷新页面;  
    具体code,这里不再枚举,感兴趣童鞋可以去 iframe+form 查看。

    • ajax + FormData 形式

    哎呀,终于来到了现代社会,并且见到了咱们的主角 FormData。 ajax 大家肯定都知道了,异步刷新,无需重新加载整个网页的情况下,便能够更新部分网页。  
    那FormData 是什么呢? FormData是XMLHttpRequest Level 2添加的一个新接口,他可以 构建类似表单的键值对, 也就是说我们可以利用 FormData 来模拟表单控件,然后使用XMLHttpRequest的send()
    方法来异步的提交这个"表单"。  
    看一下简单的使用 FormData传文件的例子

    <body>
        <input type="file" id="upload" name="upload" />    
        <input type="button" value="提交"  onclick="demoUpload()" />
        <script type="text/javascript">
            function demoUpload() {
                console.log('submit');
                var myFile = document.getElementById('upload').files[0];
                var xhr = new XMLHttpRequest();
                var formData = new FormData();
                var url = 'http://hqy.qunar.com:8080/';
                // for (var key in params) {    
                //     formData.append(key, params[key]);
                // }
                formData.append('uploadFile', myFile); // 文件
                formData.append('name', 'qunar');  // 其它数据
                xhr.open('POST', url, true);  //这里的url为本地起的一个服务地址
                xhr.send(formData);
            }
        </script>
    </body>

    选择文件并上传后,通过浏览器看看网络情况。

    答案

    啰啰嗦嗦这么多,终于知道了为什么传文件要用FormData了!!开心,简单来说就是,传文件一开始设计使用 form 来传,但是呢,使用form默认的上传方式存在诸多问题,比如同步啦,我想在上传之前处理一下数据啦,这个时候FormData 就站出来了,大喊 我可以构建类似表单的键值对,来模拟表单,发送的数据用我构建的对象就可以上传文件了。从此我们上传文件就欢欣鼓舞的来找FormData了。  
    好了,另一个小问题,文件和其他数据的不同,文件传输时是二进制数据,所以格式和一般数据不一样。 我们的FormData大侠不仅可以传文件也可以传一般数据哦,当然传输数据有很多种方式,比如get请求的时候跟在url后面。

    2. 请求为什么要用fetch呢? 和过气网红Ajax 什么关系?和xhr 有什么关系呢?

    认真看过问题1的回答,这个问题就很简单了。fetch api 是一个提供请求资源(包括通过网络)的接口,它和xhr(XMLHttpRequest)类似。  
    所以请求不是为什么要用fetch,而是fetch 只是一种方法,可以用fetch也可以用xhr(参考问题一中的 ajax + FormData demo),他们逻辑上是‘并列’的。  
    至于问和AJAX 什么关系,不如说 Ajax 和 xhr什么关系。因为Ajax的核心是XMLHttpRequest对象, Ajax异步的实现是通过new 一个 XMLHttpRequest对象,一般简称该对象对xhr。所以这里 fetch 是Ajax或XMLHttpRequest的一个替代方案。

    3. 为什么传文件的时候,'content-type'不能指定 'multipart/form-data' 呢?

    当指定为'multipart/form-data'的时候,还需要指定 boundary=something。如果不指定则会自动分配。 

    ps: 这些回答基于自己理解,如有不妥,希望路过的大神轻喷,指正。

    FormData

    MDN上这样解释FormData:  
    The FormData interface provides a way to easily construct a set of key/value pairs representing form fields and their values, which can then be easily sent using the XMLHttpRequest.send() method.It uses the same format a form would use if the encoding type were set to "multipart/form-data".  
    FormData 接口提供了一种方法,可以方便地构造一组表示表单字段和它们的值的键值对,然后可以使用XMLHtRPROQuest.send()方法轻松发送。如果一个表单设置编码格式为 multipart/form-data, 这个表单将和FormData 使用相同的格式。

    从头说起 FormData

    XHR

    fetch

    MDN 这样介绍Fetch,Fetch API 是和XHR类似的用于获取资源(包括通过网络)的一种接口方法,但是 Fetch API提供了更强大更灵活的API。fetch()便是其中一个全局方法。

    3.1 XHR(XMLHttpRequest) 和 fetch 什么关系?

    Fetch和XHR平行关系,

    3.2 fetch 和 FormData

    先来看fetch()几种常见的用法:

    Uploading JSON data: POST JSON-encoded data.

     

    upload a file

     
    展开全文
  • SpringBoot上传文件实例下载

    热门讨论 2017-03-11 17:51:25
    SpringBoot 单文件上传、批量文件上传。SpringMVC 也可以用。
  • mule开发文档级demo实例

    千次阅读 2017-08-08 14:08:41
    mule开发文档,demo示例,mule工具下载
  • Java上传文件进度条的实现方法(附demo源码下载)本文实例讲述了Java上传文件进度条的实现方法。分享给大家供大家参考,具体如下:东西很简单,主要用到commons-fileupload,其中有一个progressListener的接口,该接口...
  • WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主、FLASH为辅的现代...android 4 、两套运行时、同样的调用方式、可供用户任意选用、采用大文件分片并发上传、极大的提高了文件上传效率 二
  • 定义和用法 multiple 属性规定输入字段可选择多个值。如果使用该属性,则字段可接受多个值。...上面实例中的input file 可接受多个文件上传字段。 了解了html5中file的multiple属性,下面我们开始讲解使用html
  • SpringCloud之Eureka入门-简单demo实例创建Eureka-Server端 创建Eureka-Server端 本人用IDEA开发,如果用Eclipse请自己对应翻译相关操作,如果有问题,可以留言交流,另外教程面向小白,大神轻喷。 本教程计划...
  • windows环境下flink入门demo实例

    千次阅读 2019-04-15 15:57:15
    Flink的Windows环境入门实例还算顺利,这只是第一步,后面Apache Flink的生产落地肯定还会有更多的问题和挑战。我们会把落地过程中的问题拿到osc分享、来和大家一起交流,欢迎大家关注凯京科技。
  • springboot+layui实现文件上传,这个案例只有上传,没有其他多余的操作
  • SpringMVC+ajax文件上传实例教程

    万次阅读 2018-07-26 15:34:04
    文件上传 文件上传是项目开发中最常见的功能。为了能上传文件,必须将表单的method设置为POST,并将enctype设置为multipart/form-data。只有在这样的情况下,浏览器才会把用户选择的文件以二进制数据发送给服务器。...
  • vue elementUI文件上传实例

    千次阅读 2019-08-29 10:12:46
    <!--图片,文件上传与图片展示--> <el-upload class="upload-demo" ref="upload" action="" :on-preview="handlePreview" :on-remove="imgRemove" :o...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 28,345
精华内容 11,338
关键字:

上传文件demo实例