分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

用angularjs进行文件上传

发布时间:2023-09-06 02:08责任编辑:顾先生关键词:js文件上传

文件上传页面三要素:

1、  form表单提交方式一定是post

2、  form表单的enctype一定是multipart/form-data

3、  form表单中一定要有一个input的type是 file

   文件上传一定要有的jar

       Commons-io和commons-fileupload

 Springmvc文件上传:

1、  springmvc.xml中一定要有 多媒体解析器

  <bean id="multipartResolver"

class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

<property name="defaultEncoding" value="UTF-8"></property>

<!-- 设定文件上传的最大值 5MB,5*1024*1024 -->

<property name="maxUploadSize" value="5242880"></property>

</bean>

2、  后台Controller中的方法中形参使用MultipartFile类型接收文件,参数的名称一定要和页面上的参数名称保持一致

自己编写的上传文件demo,上传文件至FastDFS服务器,代码如下:

package demo;import org.csource.fastdfs.*;public class FastfsDemo { ???public static void main(String[] args) throws Exception { ???????ClientGlobal.init("G:\\pyg_parent\\pyg_shop_web\\src\\main\\resources\\fastdfs_client.conf");// ???????2、创建一个 TrackerClient 对象。直接 new 一个 ???????TrackerClient trackerClient = new TrackerClient();// ???????3、使用 TrackerClient 对象获取连接,获得一个 TrackerServer 对象 ???????TrackerServer trackerServer = trackerClient.getConnection();// ???????4、创建一个 StorageServer 的引用,值为 null ???????StorageServer storageServer = null;// ???????5、创建一个 StorageClient 对象,需要两个参数 TrackerServer 对象、StorageServer 的引用 ???????StorageClient storageClient = new StorageClient(trackerServer,storageServer);// ???????6、使用 StorageClient 对象上传图片 ???????String[] strings = storageClient.upload_file("C:\\Users\\o_Osky\\Desktop\\1.png", "png", null);// ???????7、返回数组。包含组名和图片的路径 ???????for (String string : strings) { ???????????System.out.println(string); ???????} ???}}

需要注意的是:上传文件的路径为绝对路径,在实际应用中,应用相对路径,且demo中new 对象过多,所以封装了工具类,代码如下:

package utils;import org.csource.common.NameValuePair;import org.csource.fastdfs.ClientGlobal;import org.csource.fastdfs.StorageClient1;import org.csource.fastdfs.StorageServer;import org.csource.fastdfs.TrackerClient;import org.csource.fastdfs.TrackerServer;public class FastDFSClient { ???private TrackerClient trackerClient = null; ???private TrackerServer trackerServer = null; ???private StorageServer storageServer = null; ???private StorageClient1 storageClient = null; ???????public FastDFSClient(String conf) throws Exception { ???????if (conf.contains("classpath:")) { ???????????conf = conf.replace("classpath:", this.getClass().getResource("/").getPath()); ???????} ???????ClientGlobal.init(conf); ???????trackerClient = new TrackerClient(); ???????trackerServer = trackerClient.getConnection(); ???????storageServer = null; ???????storageClient = new StorageClient1(trackerServer, storageServer); ???} ???????/** ????* 上传文件方法 ????* <p>Title: uploadFile</p> ????* <p>Description: </p> ????* @param fileName 文件全路径 ????* @param extName 文件扩展名,不包含(.) ????* @param metas 文件扩展信息 ????* @return ????* @throws Exception ????*/ ???public String uploadFile(String fileName, String extName, NameValuePair[] metas) throws Exception { ???????String result = storageClient.upload_file1(fileName, extName, metas); ???????return result; ???} ???????public String uploadFile(String fileName) throws Exception { ???????return uploadFile(fileName, null, null); ???} ???????public String uploadFile(String fileName, String extName) throws Exception { ???????return uploadFile(fileName, extName, null); ???} ???????/** ????* 上传文件方法 ????* <p>Title: uploadFile</p> ????* <p>Description: </p> ????* @param fileContent 文件的内容,字节数组 ????* @param extName 文件扩展名 ????* @param metas 文件扩展信息 ????* @return ????* @throws Exception ????*/ ???public String uploadFile(byte[] fileContent, String extName, NameValuePair[] metas) throws Exception { ???????????????String result = storageClient.upload_file1(fileContent, extName, metas); ???????return result; ???} ???????public String uploadFile(byte[] fileContent) throws Exception { ???????return uploadFile(fileContent, null, null); ???} ???????public String uploadFile(byte[] fileContent, String extName) throws Exception { ???????return uploadFile(fileContent, extName, null); ???}}

配置spingmvc文件,配置解析器:

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" ??????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ??????xmlns:context="http://www.springframework.org/schema/context" ??????xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" ??????xsi:schemaLocation="http://www.springframework.org/schema/beans ???????http://www.springframework.org/schema/beans/spring-beans.xsd ???????http://www.springframework.org/schema/context ???????http://www.springframework.org/schema/context/spring-context.xsd ???????http://www.springframework.org/schema/mvc ???????http://www.springframework.org/schema/mvc/spring-mvc.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> ???<!--引用外部资源文件--> ???<context:property-placeholder location="classpath:config/application.properties"/> ???<mvc:annotation-driven> ???????<mvc:message-converters> ???????????<bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"> ???????????????<property name="supportedMediaTypes" value="application/json"/> ???????????????<property name="features"> ???????????????????<array> ???????????????????????<value>WriteMapNullValue</value> ???????????????????????<value>WriteDateUseDateFormat</value> ???????????????????</array> ???????????????</property> ???????????</bean> ???????</mvc:message-converters> ???</mvc:annotation-driven> ???<!--引用douub服务--> ???<dubbo:application name="pyg-shop-web"/> ???<dubbo:registry address="zookeeper://192.168.25.61:2181"/> ???<dubbo:annotation package="com.pyg.shop"/> ???<mvc:default-servlet-handler/> ???<!--配置多媒体解析器--> ???<bean id="multipartResolver" ?????????class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> ???????<property name="defaultEncoding" value="UTF-8"></property> ???????<!-- 设定文件上传的最大值 5MB,5*1024*1024 --> ???????<property name="maxUploadSize" value="5242880"></property> ???</bean></beans>

angularjsServer层代码:

app.service("uploadService",function($http){// ???angularJS的文件上传 ???this.upload=function(){// ???????html5的对象 ???????var formData = new FormData(); ???????formData.append("file",file.files[0]); //file.files[0] js的取值方式 ?取到页面的第一个type=”file“ ?"file"与MultipartFile file 名字一致 ???????return $http({ ???????????method:‘post‘, ???????????url:‘../upload/uploadFile‘, ???????????data:formData, ???????????headers: {‘Content-Type‘:undefined}, ?//写了这一行即声明enctype类型一定是 multipart/form-data ?????????????transformRequest: angular.identity ?//序列化上传的文件 ???????}); ???}})

angularController层代码:

 ?$scope.uploadFile = function () { ???????uploadService.upload().success(function (result) { ???????????if (result.flag) { ???????????????$scope.imgUrl = result.message; ???????????} else { ???????????????alert(result.message); ???????????} ???????}) ???}

调用工具类实现文件上传:

package com.pyg.shop.controller;import bean.ResultInfo;import org.springframework.beans.factory.annotation.Value;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;import org.springframework.web.multipart.MultipartFile;import utils.FastDFSClient;@RestController@RequestMapping("/upload")public class UploadController { ???/* ????* springmvc从properties中获取变量的方式 ????* application.properties==>upload_server=http://192.168.25.133/ ????* */ ???@Value("${upload_server}") ???private String uploadServer; ???@RequestMapping("/uploadFile") ???public ResultInfo uploadFile(MultipartFile file) { ???????try { ???????????/* ???????????* tracker_server=192.168.25.133:22122 ???????????* */ ???????????FastDFSClient fastDFSClient = new FastDFSClient("classpath:fastdfs_client.conf"); ???????????String fileName = file.getOriginalFilename();//获取上传文件的相对路径 ???????????/* ???????????* 获取上传文件的扩展名 ???????????* png 不带“.” 所以+1 ???????????* */ ???????????String extName = fileName.substring(fileName.lastIndexOf(".") + 1); ???????????/* ???????????* 文件上传成功后,返回文件在服务器中位置 ???????????* 为了准确的url需要拼接上服务器ip,ip可能会变动,所以用配置文件加载服务器ip ???????????* */ ???????????String fileUrl = fastDFSClient.uploadFile(file.getBytes(), extName); ???????????return new ResultInfo(true, uploadServer + fileUrl); ???????} catch (Exception e) { ???????????e.printStackTrace(); ???????????return new ResultInfo(false, "上传失败"); ???????} ???}}

实现效果如下:

用angularjs进行文件上传

原文地址:https://www.cnblogs.com/linsky/p/10548812.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved