首页 > 编程语言 >PHP发送文件到JAVA项目

PHP发送文件到JAVA项目

时间:2023-05-12 17:56:20浏览次数:49  
标签:JAVA System 发送 add file new curl PHP out

https://blog.csdn.net/u012685554/article/details/126995307

亲测有用。

php代码

$file = $_FILES['order_upload']['tmp_name'];
//            // var_dump($file);exit();
//            // 判断文件是否存在
            if (!file_exists($file)) {
                $this->show('文件不存在!');
                exit;
            }
            $params = [
                'file'=>new \CURLFILE($file),
                'id'=>'1',
                'fileName'=>$_FILES['order_upload']['name'],
            ];

            $url = "http://localhost:8080/upload";


            $header = array('Content-Type: multipart/form-data');

            $curl = curl_init();
            curl_setopt($curl, CURLOPT_URL, $url);
            curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");//3.请求方式
            curl_setopt($curl, CURLOPT_POSTFIELDS, $params);
            curl_setopt($curl, CURLOPT_HEADER, 0);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1);
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
            curl_setopt($curl,CURLOPT_HEADER,$header);
            $response = curl_exec($curl);

            echo $response;

  

 

java代码

@RestController
@Slf4j
public class TestController {

    @PostMapping("/upload")
    @ResponseBody
    public String uploadOrderExcel(@RequestParam("file") MultipartFile file,@RequestParam("id")String id,@RequestParam("fileName")String fileName) {
        System.out.println("fileName:" + file.getOriginalFilename());
        System.out.println("id:" + id);
        System.out.println("fileName:" + fileName);
        String lastName = Objects.requireNonNull(fileName.substring(fileName.lastIndexOf(".") + 1));
        switch (lastName) {
            case "xlsx":
                try {
                    //xlsx
                    InputStream inputStream = file.getInputStream();
                    XSSFWorkbook wb = new XSSFWorkbook(inputStream);
                    XSSFSheet sheet = wb.getSheetAt(0);
                    //获取总行数 index从0开始
                    int rowNum = sheet.getLastRowNum();
                    //获取总列数,index好像从1开始
                    int colNum = sheet.getRow(0).getPhysicalNumberOfCells();
                    List<String> colNames = new ArrayList<>();
                    //插入列名
                    XSSFRow row = sheet.getRow(0);
                    for (int i = 0; i < colNum; i++) {
                        colNames.add(String.valueOf(row.getCell(i)));
                    }
                    Map<String, Integer> map = checkDataFromFile(colNames);
                    for (Map.Entry<String, Integer> entry : map.entrySet()) {
                        System.out.print(entry.getKey() + "      ");
                    }
                    System.out.println();
                    for (int i = 1; i <= rowNum; i++) {
                        for (Map.Entry<String, Integer> entry : map.entrySet()) {
                            XSSFRow nowRow = sheet.getRow(i);
                            System.out.print(nowRow.getCell(entry.getValue()) + "   ");
                        }
                        System.out.println();
                    }
                    return "rowNum: " + rowNum + " colNum: " + colNum;
                } catch (Exception e) {
                    throw new RuntimeException(e);
                }
            case "xls":
                //xls
                try {
                    InputStream inputStream = file.getInputStream();
                    // 创建workbook对象,读取整个文档
                    HSSFWorkbook wb = new HSSFWorkbook(inputStream);
                    HSSFSheet sheet = wb.getSheetAt(0);
                    //获取行数,列数
                    int rowNum = sheet.getLastRowNum();
                    int colNum = sheet.getRow(0).getPhysicalNumberOfCells();
                    List<String> colNames = new ArrayList<>();
                    //插入列名
                    HSSFRow row = sheet.getRow(0);
                    for (int i = 0; i < colNum; i++) {
                        colNames.add(String.valueOf(row.getCell(i)));
                    }
                    Map<String, Integer> map = checkDataFromFile(colNames);
                    for (Map.Entry<String, Integer> entry : map.entrySet()) {
                        System.out.print(entry.getKey() + "      ");
                    }
                    System.out.println();
                    for (int i = 1; i <= rowNum; i++) {
                        for (Map.Entry<String, Integer> entry : map.entrySet()) {
                            HSSFRow nowRow = sheet.getRow(i);
                            System.out.print(nowRow.getCell(entry.getValue()) + "   ");
                        }
                        System.out.println();
                    }
                    return "rowNum: " + rowNum + " colNum: " + colNum;
                } catch (Exception e) {
                    throw new RuntimeException(e);
                }
            case "csv":
                return "csv";
            default:
                return "null";
        }
    }

    public Map<String,Integer> checkDataFromFile(List<String> colName) {
        //检查所需字段是否均存在表格内,存在返回Map<字段名,列索引>,不存在返回null
        //这里可以抽离出去封装
        Map<String, List<String>> oMap = new HashMap<>(16);
        List<String> list1 = new ArrayList<>();
        list1.add("收货人姓名");
        list1.add("收件人");
        oMap.put("name", list1);

        List<String> list2 = new ArrayList<>();
        list2.add("收货人地址");
        list2.add("收货地址");
        list2.add("地址");
        oMap.put("address", list2);

        List<String> list3 = new ArrayList<>();
        list3.add("收货人姓名电话");
        list3.add("联系方式");
        list3.add("手机");
        oMap.put("phone", list3);

        List<String> list4 = new ArrayList<>();
        list4.add("商品标题");
        list4.add("商品名称");
        list4.add("型号");
        oMap.put("goodsName", list4);

        List<String> list5 = new ArrayList<>();
        list5.add("数量");
        list5.add("商品数量");
        oMap.put("goodsNum", list5);

        boolean can = true;
        Map<String, Integer> resultMap = new HashMap<>(16);
        for (Map.Entry<String, List<String>> entry : oMap.entrySet()) {
            boolean found = false;
            for (String o : entry.getValue()) {
                for (int i = 0; i < colName.size(); i++) {
                    if (colName.get(i).equals(o)) {
                        resultMap.put(String.valueOf(entry.getKey()), i);
                        found = true;
                        break;
                    }
                }
            }
            //如果有哪个字段没有匹配上
            if (!found) {
                can = false;
                break;
            }
        }
        //如果全部匹配
        if (can) {
            return resultMap;
        }
        //默认返回
        return null;
    }
}

  

 

标签:JAVA,System,发送,add,file,new,curl,PHP,out
From: https://www.cnblogs.com/achengmu/p/17395896.html

相关文章

  • java可视化开发工具好用不好用?
    java可视化开发工具到底好用不好用?这是不少粉丝朋友经常询问到的一个问题。在数字化发展趋势越发明显的当下,java可视化开发工具可以帮助各中大型企业实现转型升级,它的灵活、简洁、易操作、可视化等功能优势,让很多客户朋友欣慰不已,仿佛寻觅到了市场的发展动向。今天,我们就一起来了......
  • php imagick圆角
    $watermark=new\Imagick();$watermark->readImage($avatarpath);$watermark->scaleImage(160,160,true);$watermark->setFormat('png');$mask=new\Imagick();$mask->newImage($watermark......
  • 浅谈一下ThinkPHP5.1实现事务嵌套的特性
    前言:       在我们平时做的一个项目中,线上环境突然发现数据库被锁住。导致很多有关数据插入和修改的接口全都瘫痪,项目基于ThinkPHP5.1。报错的时候,我们发现了一条sql错误日志,如下。   根据错误信息提示,是说有一个事务回滚时没有找到savepoint的暂存点。所以问题应该......
  • Java全栈学习路线图
    Java全栈学习路线图 第一阶段:Java基础篇 01 J2SEv2(41课时)  课程链接 02 Mysql数据库(20课时) 课程链接 03 JDBC(9课时)  课程链接 04  Swing图书管理系统V2.0(8课时)  课程链接  第一阶段:学习目标及知识要点01   熟练掌握Java基础语法,Java面......
  • php 异步形式调取导出数据
    php部分ajax请求此部分functionaysncexec(){$lock_file='filelock.lock';if(file_exists($lock_file)){exit(json_encode(array('code'=>0)));}$url=base_url().'execcmd';......
  • Java设计模式【单例模式】
    Java设计模式【单例模式】单例模式单例模式(SingletonPattern)是一种创建型设计模式,其主要目的是确保一个类只有一个实例,并提供对该实例的唯一访问点。优缺点优点:提供了对唯一实例的受控访问。由于在系统内存中只存在一个对象,因此可以节约系统资源。缺点:单例类的......
  • Java设计模式简介(总结)
    Java设计模式简介(总结)什么是设计模式Java设计模式是一组经过验证的解决特定问题的编程技术,这些技术可以帮助开发人员快速、有效地开发高质量的软件。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式分类设计模式一般分为三大类:创建型、结构......
  • java 的 JDK JRE , android 的 SDK NDK , native c++ 的概念
       ......
  • Ohm:用 JavaScript 创造你的编程语言
    导读解析器是一种超级有用的软件库。从概念上简单的说,它们的实现很有挑战性,并且在计算机科学中经常被认为是黑魔法。在这个系列的博文中,我会向你们展示为什么你不需要成为哈利波特就能够精通解析器这种魔法。但是为了以防万一带上你的魔杖吧!我们将探索一种叫做Ohm的新的......
  • google-java-format 插件
    GoogleJavaStyleGuidegoogle-java-formatgoogle-java-format插件可用于重新格式化Java源代码,。启用后,它将替换通常的ReformatCode操作。该操作可以通过Code->ReformatCode触发,也可以使用Ctrl+Alt+L触发。IDEA中使用google-java-format插件在File->Settings->Pl......