List<byte[]> dataBlocks = new List<byte[]>(); byte[] data = new byte[dataBlocks.Sum(b => b.Length)]; 报错了 ,
时间: 2023-12-26 10:05:45 浏览: 56
这个报错可能是因为在初始化 `data` 数组时,它的长度为0。你可以在初始化 `data` 数组之前,先检查一下 `dataBlocks` 是否为空。例如:
```csharp
List<byte[]> dataBlocks = new List<byte[]>();
// 在添加数据块之前,先检查一下dataBlocks是否为空
if (dataBlocks.Any())
{
byte[] data = new byte[dataBlocks.Sum(b => b.Length)];
// 将所有数据块复制到data数组中
int offset = 0;
foreach (byte[] block in dataBlocks)
{
Buffer.BlockCopy(block, 0, data, offset, block.Length);
offset += block.Length;
}
}
else
{
// dataBlocks为空,不能初始化data数组
// 这里可以给出一个默认值或者抛出异常
}
```
这样就可以避免 `data` 数组长度为0的情况,从而避免出现异常。
相关问题
List<byte[]>转List<FilePart>,并用webclient传输List<FilePart>
List<byte[]>转List<FilePart>可以通过遍历List<byte[]>,然后将每个byte[]转换为FilePart对象,并将其添加到新的List<FilePart>中实现。下面是一个示例代码:
List<byte[]> byteList = // 原始的List<byte[]>对象
List<FilePart> filePartList = new List<FilePart>();
foreach (byte[] byteArray in byteList)
{
FilePart filePart = new FilePart(byteArray); // 根据byte[]创建FilePart对象
filePartList.Add(filePart); // 将FilePart对象添加到List<FilePart>中
}
然后,你可以使用WebClient类来传输List<FilePart>。你可以使用UploadData方法来实现。下面是一个示例代码:
string url = "http://example.com/upload";
WebClient client = new WebClient();
foreach (FilePart filePart in filePartList)
{
byte[] data = filePart.GetBytes(); // 获取FilePart对象的字节数组
client.UploadData(url, data); // 使用UploadData方法传输字节数组到指定的URL
}
@AuditAction(requestName = "导出全部人员信息") @PostMapping(value = "/exportall/cadre") public ResponseEntity<byte[]> exportAllCadre(@RequestBody Map<String, String> map, HttpServletRequest request, CadreQuery queryParams) { HashMap<String, String[]> requestParams = new HashMap<>(); requestParams.putAll(request.getParameterMap()); requestParams.put("transferSituation", new String[] {"0"}); JPAPage<Cadre> findPage = cadreService.findPage(PageRequest.of(0, Integer.MAX_VALUE), queryParams); List<Cadre> cadreList = findPage.getContent(); List<CadreExportVO> excelData = new ArrayList<CadreExportVO>(); if(cadreList != null){ for(Cadre cadre : cadreList){ CadreExportVO vo = CadreExportVO.make(cadre,null); excelData.add(vo); } } byte[] byteArray = EasyExcelUtil.writeDataToByteArray(excelData, CadreExportVO.class); return ResponseEntityUtil.downloadFile(byteArray, FileNameUtil.generateFileName("人员信息")); }
这段代码是一个Java Spring Boot的Controller,处理POST请求,路径为"/exportall/cadre",用于导出全部人员信息。它从request获取参数,然后通过调用cadreService的findPage方法查询所有人员信息,并将查询结果转换成excelData列表,最后使用EasyExcelUtil将excelData转换为字节数组。最终返回一个ResponseEntity对象,其中包含了导出的excel文件的字节数组和文件名。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)