PHP发送文件到JAVA项目
Posted 穆晟铭
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP发送文件到JAVA项目相关的知识,希望对你有一定的参考价值。
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;
PHP 变量到 Java 小程序?
【中文标题】PHP 变量到 Java 小程序?【英文标题】:PHP variables to Java applet? 【发布时间】:2012-05-20 17:44:11 【问题描述】:我有一个音频可视化小程序,我使用 fft 进行处理和最小化来分析音频。现在我想在用户点击歌曲时使用 php 动态地将歌曲输入到程序中。我已经阅读了有关 JavaBridge 的信息,并使用 Tomcat 启动并运行它。我是否需要将歌曲变量值存储在 xml 文件中并将其发送到 .java 文件?这是正确的方法吗?如果是这样,知道这会是什么样子吗?我对java和处理完全陌生。任何帮助都将不胜感激!
【问题讨论】:
如果我可以在开发需要在网页中运行的 Java 小程序时为您提供提示,因为它们与 javascript 交互,请打开计算机上的“Java 控制面板”,然后高级 > 控制台>显示安慰。现在,当您访问具有小程序的网页时,浏览器中会弹出一个 java 控制台。有助于调试和查看消息/异常。此外,您可能需要经常按“x”命令。 【参考方案1】:当用户点击歌曲时,使用 php 动态地将歌曲输入到程序中。
假定答案的翻译:
PHP 转 HTML。 “点击歌曲”到“点击链接”。由于 HTML 中有歌曲链接,添加一个onclick()
处理程序,并在被调用的函数中,使用 JavaScript 调用小程序方法来加载所需的歌曲。
只要小程序从代码库或文档库加载歌曲,这在沙盒小程序中应该是允许的。不幸的是,从 JS 调用的方法中这样做会使事情稍微复杂化,因为安全沙盒更加严格。
如果是这种情况,则需要将调用包装在 PrivilegedAction
中并使用 AccessController.doPrivileged(PrivilegedAction)
调用它
【讨论】:
如果你有 javascript 调用的方法只是将动作排入队列,并且预先创建的单独线程通过轮询队列来执行网络操作,那是否不需要使用 PriveledgedAction 进行包装? 是的,谢谢,应该可以完美运行!如果流来自像 Soundcloud 这样的外部来源怎么办?大多数 Soundcloud 歌曲都有一个链接到 128kbs mp3 流的 stream_url 属性。会有整合的可能吗? 小程序需要信任(不是沙盒),除非您可以在您的站点安排代理 - 以重定向源。 我实际上意识到我可以将歌曲 url 作为参数发送到处理小程序,这样当用户单击歌曲时,它会调用一个 javascript 函数,该函数对 php 进行 ajax 调用我通过歌曲 url/id 的脚本。然后我将 url 插入到 applet 参数中,并在 applet 中使用 String url = this.getParameter("streamurl"); 读取它。 ,而且效果很好。感谢您的所有帮助! 另外顺便说一句,与 128kbps Soundcloud 流 url 的集成效果很好。 Minim 接受 url 或 mp3 文件作为源,因此 Soundcloud 的 api 提供的“stream_url”与 Minim 配合得很好!【参考方案2】:基本顺序如下:
用户在浏览器中请求.php页面。 Web 服务器让 PHP 编写页面。 它可以编写带有指定applet的HTML,可以编写带有PHP填充值的参数的applet HTML。 客户端收到一个 HTML 页面,该页面将启动小程序。因此,PHP 无法以简单直接的方式处理对页面的点击。在此关注@AndrewThompson。
【讨论】:
以上是关于PHP发送文件到JAVA项目的主要内容,如果未能解决你的问题,请参考以下文章
如何将 HighCharts 图像保存到 PHP 中的项目文件夹中?
div 项目的 php onclick 将帖子发送到 url