前些时间项目和h5交互时涉及到了文件上传的一个功能,但是h5在写上传的时候总是上传不上,所以花时间专门看了下web端的文件上传记录下。

第一种是前端写的,拿来修改了下,这种方法在上传的时候需要用到jquery.js和ajaxfileupload.js:

//获取图片本地url

function getObjectURL(file) {

var url = null;

if (window.createObjectURL != undefined) { // basic

url = window.createObjectURL(file);

} else if (window.URL != undefined) { // mozilla(firefox)

url = window.URL.createObjectURL(file);

} else if (window.webkitURL != undefined) { // webkit or chrome

url = window.webkitURL.createObjectURL(file);

}

return url;

}

//上传文件

var videoupload;

$("#filevideo").change(function () {

layer.load();

var imgUrl = getObjectURL(this.files[0]);

$("#headvideo").attr("src", imgUrl);

var formData = new FormData($("#uploadFormvideo")[0]);

$.ajax({

url: '向后台发送请求地址',

type: 'post',

data: formData,

dataType: 'json',

async: false,

cache: false,

contentType: false,

processData: false,

success: function (res) {

if (res.errorMessage) {

alert(res.errorMessage);

} else {

$("#headvideo").attr("src", res.url);

videoupload = res.url;

layer.closeAll('loading');

}

}

});

});

第二种是带有进度条的文件上传,只是用到了jquery.js

//html部分:

#parent{width:550px; height:10px; border:2px solid #09F;}

#son {

width:0;

height:100%;

border-radius:10px;

background-color:#e94829;

text-align:center;

line-height:20px;

font-size:15px;

color:white;

font-weight:bold;

}

//js部分

function uploadFile(){

var pic = $("#pic").get(0).files[0];

var formData = new FormData();

formData.append("file" , pic);

$.ajax({

type: "POST",

url: "http://192.168.0.119/reading/upload_renovate.action",

data: formData ,

processData : false, //必须false才会自动加上正确的Content-Type

dataType: 'json',

contentType : false ,//必须false才会避开jQuery对 formdata 的默认处理

xhr: function(){

var xhr = $.ajaxSettings.xhr();

if(onprogress && xhr.upload) {

xhr.upload.addEventListener("progress" , onprogress, false);

return xhr;

}

},

success: function(res) {

console.log(res);

$("#versionsize").val(res.filesize);

$("#versionurl").val(res.url);

}

});

}

/**   *  侦查附件上传情况  ,这个方法大概0.05-0.1秒执行一次   */

function onprogress(evt){

var loaded = evt.loaded;         //已经上传大小情况

var tot = evt.total;           //附件总大小

var per = Math.floor(100*loaded/tot);   //已经上传的百分比

$("#son").html( per +"%" );

$("#son").css("width" , per +"%");

}

//后台接收文件上传并保存方法

//SSH框架

private File[] file; //上传的文件

private String[] fileFileName; //文件名称

private String[] fileContentType; //文件类型

//提供get/set方法

public String uploadmore(String filepath) throws Exception{

String url = "";

if (file != null) {

java.util.Date Datenow=new java.util.Date();//获取当前日期

java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("yyyyMMdd");

String nowdate = formatter.format(Datenow).substring(0,6); //将日期格式化

String realDirectory = request.getSession().getServletContext().getRealPath(filepath)+"/"+nowdate;

for (int i = 0; i < file.length; i++) {

String fileType = fileFileName[i].substring(fileFileName[i].length()-3);

String filename=System.currentTimeMillis() + (i + ".") + fileType;

String filedir = realDirectory+"/" + filename; // 以系统时间作为上传文件名称,设置上传文件的完整路径

if (file[i].length()>1024*1024) {

ImgUtill.compressImage(file[i].getAbsolutePath(), filedir, 500, 680);//image的工具类,可以对图片进行压缩

}else{

File f = new File(filedir);

try {

FileUtils.copyFile(file[i], f);

} catch (IOException e) {

e.printStackTrace();

}

}

//因为图片的路径都是保存在一个字段里面,所以在上传的时候用逗号隔开

if (i==file.length-1) {

url += Constants.FILE_DIRECTORY + filepath + "/" +nowdate+"/"+filename;

}else{

url += Constants.FILE_DIRECTORY + filepath + "/" +nowdate+"/"+filename+",";

}

}

}

return url;

}

//SSM框架

@RequestMapping(value="/upload",method=RequestMethod.POST)

@ResponseBody

public String upload(MultipartFile file,HttpServletRequest request) throws IOException{

String path = request.getSession().getServletContext().getRealPath("upload");

String fileName = file.getOriginalFilename();//获取到上传文件的名字

//System.out.println(file.getName()+"2222");获取到file

//file.getSize();获取到上传文件的大小

File dir = new File(path,fileName);

System.out.println(file.getSize());

if(!dir.exists()){

dir.mkdirs();

}

//MultipartFile自带的解析方法

file.transferTo(dir);

return "/upload"+"/"+fileName;

}

html上传文件与后台处理,关于前端html图片和文件上传和后台接收方法相关推荐

  1. 前端获取图片压缩后上传给后台

    在做移动端图片上传的时候,用户传的都是手机本地图片,而本地图片一般都相对比较大,拿iphone6来说,平时拍很多图片都是一两M的,如果直接这样上传,那图片就太大了,如果用户用的是移动流量,完全把图片上 ...

  2. PHP上传文件缺省目录,帝国cms默认图片、附件上传路径/d/file/怎么修改

    很多朋友问帝国CMS修改附件保存地址不生效如何解决,今天教大家如何将帝国CMS系统的默认文件存放路径/d/file/修改掉,这个功能到底怎么实现呢?这里涉及到后台设置和网站文件的修改,如果只更改后台附 ...

  3. webuploader插件 前端实现图片旋转后上传

    前端上传图片正向的图片,上传后就被旋转了.这是因为,图片中包含许多属性来记录拍摄信息.引入EXIF就可以读取这些属性. 引入exif.js文件 exif.js文件下载地址:http://code.ci ...

  4. 查找重复文件_快速查找、删除重复图片及文件!

    照片或者文件多了难免就会有重复,浪费硬盘空间的情况,下面让我们一起使用ACDSee 官方免费版软件删除你的重复图片及文件吧! 1. 打开软件,点击"工具"下的"查找重复项 ...

  5. 图片名字存在txt文件中,从另一个装有图片的文件夹中筛选对应的图片。python代码

    txt文件的每一行都存一张图片的名字(带尾缀),从另一个存有全部图片的文件中筛选txt中存在的图片. # -*- coding: UTF-8 -*- # !/usr/bin/env python im ...

  6. web前端之——图片上传

    本文主要讨论以下两部分:  一.实现图片及时预览,将用户选中的图片及时显示在前台页面(利用FileReader实现):不用通过后台接口返回的图片地址赋值给src再展示到前台,减少前后台的频繁交互: 二 ...

  7. vue:前端压缩图片上传

    网上关于vue前端压缩图片后再上传到的代码很多,大家可以一试~ compressImage.js文件 // 压缩图片 export function compressImage({ file, con ...

  8. 前端实现图片压缩上传功能

    以移动端为例,在H5上传图片时,由于机型 / 网速 / 流量等限制,在低版本机型上经常会出现上传的图片太大导致上传很慢甚至崩溃的情况,所以需要对在某些情况下需要对上传的图片进行压缩上传. 以下以移动端 ...

  9. (36)Gulp 构建资源(图片)文件

    一.Gulp 构建资源(图片)文件概述 所谓Gulp 构建资源(图片)文件就是将图片占用大小压缩后变小.其实我们Gulp构建资源文件不只是单独只图片,还有其他的比如说字体文件,也是资源文件.这里我们拿 ...

最新文章

  1. RabbitMQ基本概念(一)-RabbitMQ的优劣势及产生背景
  2. 优酷超高清视频技术实践
  3. 2014年英语一作文partA
  4. mysql聚合索引创建_为 MySQL 查询优化选择最佳索引
  5. MATLAB中如何删除坐标上已画出的内容
  6. Basic Theory of Physically-Based Rendering
  7. java银联接口代码_银联接口测试——详细(JAVA)(示例代码)
  8. [转]一阶自回归模型和二阶自回归模型
  9. python des加密文件_python基于pyDes库实现des加密的方法
  10. php开发pdf,使用PHP编写PDF(PDFLib)
  11. 关于#include “stdafx.h“添加的错误问题
  12. python chardet_chardet
  13. 奇妙的定律、理论、原则、效应、...(Amazing Laws,Theories,Principles,Effects,...)
  14. 网页的短信与邮箱注册
  15. 【Java学习笔记】 MYSQL03 学习使用JDBC访问数据 以及 JDBC的优化和封装
  16. because of, due to, owing to, on account of,as a result of和thanks to的用法比较
  17. 【已解决】体视显微镜左右成像大小不一致
  18. 电脑下载了谷歌浏览器,设置无法默认选用谷歌浏览器
  19. 哪一本科普书籍,会改变你的认知?
  20. 蚂蚁树林小游戏玩法介绍

热门文章

  1. 输出字符数字空格个数
  2. 语音识别数据集处理python进行音频处理
  3. 使用pytorch搭建 RNN线性神经网络
  4. 跳出数据计算拯救人工智能之分布式逻辑
  5. oc-29-可变数组
  6. 【学习笔记】Android 图像处理
  7. MYSQL的深入学习--优化步骤
  8. beanUtils操作bean的属性
  9. 了解了解一下SQLSERVER里的鬼影记录
  10. matlab数据的拼接