Parameter "basePath" cannot have zero length.

环境:win7 32位,vs2010

问题:f5启动调试,然后报错:Parameter "basePath" cannot have zero length.

解决:右键项目,Property->Configuation->Debugging->Command里面的exe要实际存在

我的就是link output的是WinLauncher.exe,而Debugging里却是WinLauncher_2010.exe

参考:http://stackoverflow.com/questions/9497494/error-in-visual-studio-while-debugging-parameter-basepath-cannot-have-zero-le

最好使用现有工具类,比如说这个:package jnpf.util; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.io.file.FileNameUtil; import cn.hutool.core.util.StrUtil; import jnpf.constant.GenerateConstant; import jnpf.constant.MsgCode; import jnpf.entity.FileDetail; import jnpf.entity.FileParameter; import jnpf.exception.DataException; import jnpf.model.FileListVO; import jnpf.util.context.SpringContext; import lombok.extern.slf4j.Slf4j; import org.dromara.x.file.storage.core.FileInfo; import org.dromara.x.file.storage.core.FileStorageProperties; import org.dromara.x.file.storage.core.FileStorageService; import org.dromara.x.file.storage.core.get.*; import org.dromara.x.file.storage.core.platform.FileStorage; import org.dromara.x.file.storage.core.upload.UploadPretreatment; import org.dromara.x.file.storage.core.util.Tools; import org.dromara.x.file.storage.spring.SpringFileStorageProperties; import org.springframework.util.Assert; import org.springframework.util.ReflectionUtils; import org.springframework.web.multipart.MultipartFile; import javax.imageio.ImageIO; import java.io.File; import java.io.InputStream; import java.io.OutputStream; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Objects; import java.util.function.Consumer; @Slf4j public class FileUploadUtils { private static final String PLATFORM_LOCAL = "local-plus-1"; private static FileStorageService fileStorageService; // private static FileDetailService fileDetailService; private static SpringFileStorageProperties fileStorageProperties; private static List<String> imagesReaderSuffix; private static List<String> imagesWriterSuffix; static { fileStorageService = SpringContext.getBean(FileStorageService.class); // fileDetailService = SpringContext.getBean(FileDetailService.class); fileStorageProperties = SpringContext.getBean(SpringFileStorageProperties.class); //获取支持读取的图片后缀 imagesReaderSuffix = Arrays.asList(ImageIO.getReaderFormatNames()); //获取支持写入的图片后缀 imagesWriterSuffix = Arrays.asList(ImageIO.getWriterFormatNames()); } public static FileStorageProperties.LocalPlusConfig getLocalStorageConfig() { List<? extends FileStorageProperties.LocalPlusConfig> localPlus = fileStorageProperties.getLocalPlus(); Assert.noNullElements(localPlus, "未配置本地存储"); return localPlus.get(0); } /** * 获取文件信息 * * @return */ public static FileDetail getFileDetail(FileParameter parameter) { FileDetail fileDetail = new FileDetail(); fileDetail.setPath(parameter.getRemotePath()); fileDetail.setFilename(parameter.getRemoteFileName()); String basePath; String platform; FileStorage fileStorage = fileStorageService.getFileStorage(); if (parameter.isOrgin()) { basePath = getLocalBasePath(); platform = PLATFORM_LOCAL; } else { basePath = getBasePath(fileStorage); platform = getDefaultPlatform(); } fileDetail.setBasePath(basePath); fileDetail.setPlatform(platform); return fileDetail; } // /** // * 获取文件url // * // * @param path // * @param fileName // * @return // */ // public static String getFileUrl(String path, String fileName) { // FileDetail fileDetail = getFileDetail(path, fileName, ); // String url = null; // if (fileDetail == null) { // url = fileStorageService.getFileStorage().getBasePath() + path + fileName; // } else { // url = fileDetail.getUrl(); // } // return url; // } /** * 返回本地地址且固定为local-plus-1 * * @return */ public static String getLocalBasePath() { FileStorageProperties.LocalPlusConfig localStorageConfig = getLocalStorageConfig(); return Tools.getNotNull(localStorageConfig.getStoragePath(), StrUtil.EMPTY) + Tools.getNotNull(localStorageConfig.getBasePath(), StrUtil.EMPTY); } /** * 获取指定存储平台基础路径 * * @return */ public static String getBasePath(FileStorage fileStorage) { try { if (fileStorage != null) { Field field = ReflectionUtils.findField(fileStorage.getClass(), "basePath"); if (field != null) { ReflectionUtils.makeAccessible(field); String basePath = (String) ReflectionUtils.getField(field, fileStorage); if (StringUtil.isNotEmpty(basePath)) { return basePath; } } } } catch (Exception e) { } return ""; } /** * 获取当前存储平台基础路径 * * @return */ public static String getBasePath() { return getBasePath(fileStorageService.getFileStorage()); } /** * 获取文件信息 * * @return */ public static FileInfo getFileInfo(FileParameter parameter) { FileDetail fileDetail = getFileDetail(parameter); return BeanUtil.copyProperties(fileDetail, FileInfo.class, "attr"); } public static FileInfo getRemoteFileInfo(FileParameter parameter) { process(parameter); GetFilePretreatment getFilePretreatment = fileStorageService.getFile(); getFilePretreatment.setPath(parameter.getRemotePath()); getFilePretreatment.setFilename(parameter.getRemoteFileName()); RemoteFileInfo remoteFileInfo = getFilePretreatment.getFile(); return remoteFileInfo.toFileInfo(); } /** * 上传文件,通过字节数组 * 减少使用, 无法上传大于2G的文件 * * @param parameter 文件参数 * @param bytes 内容 */ public static FileInfo uploadFile(FileParameter parameter, byte[] bytes) { process(parameter); UploadPretreatment uploadPretreatment = fileStorageService.of(bytes); FileInfo fileInfo = uploadInner(parameter, uploadPretreatment); Assert.notNull(fileInfo, MsgCode.FA033.get()); return fileInfo; } /** * 上传文件,MultipartFile * * @param parameter 文件参数 * @param multipartFile 文件 */ public static FileInfo uploadFile(FileParameter parameter, MultipartFile multipartFile) { process(parameter); UploadPretreatment uploadPretreatment = fileStorageService.of(multipartFile); FileInfo fileInfo = uploadInner(parameter, uploadPretreatment); Assert.notNull(fileInfo, MsgCode.FA033.get()); return fileInfo; } /** * 上传文件,MultipartFile * * @param parameter 文件参数 * @param inputStream 文件 */ public static FileInfo uploadFile(FileParameter parameter, InputStream inputStream) { process(parameter); UploadPretreatment uploadPretreatment = fileStorageService.of(inputStream); FileInfo fileInfo = uploadInner(parameter, uploadPretreatment); Assert.notNull(fileInfo, MsgCode.FA033.get()); return fileInfo; } /** * 上传文件,MultipartFile * * @param parameter 文件参数 * @param file 文件 */ public static FileInfo uploadFile(FileParameter parameter, File file) { process(parameter); UploadPretreatment uploadPretreatment = fileStorageService.of(file); FileInfo fileInfo = uploadInner(parameter, uploadPretreatment); Assert.notNull(fileInfo, MsgCode.FA033.get()); return fileInfo; } private static FileInfo uploadInner(FileParameter parameter, UploadPretreatment uploadPretreatment) { process(parameter); uploadPretreatment.setPath(parameter.getRemotePath()) //设置上传文件名 //.setSaveFilename(StringUtil.isNotEmpty(parameter.getRemoteFileName()), parameter.getRemoteFileName()) .setOriginalFilename(StringUtil.isNotEmpty(parameter.getRemoteFileName()), parameter.getRemoteFileName()); if (parameter.isThumbnail()) { String ext = FileNameUtil.getSuffix(StringUtil.isNotEmpty(parameter.getLocalFileName()) ? parameter.getLocalFileName() : parameter.getRemoteFileName()); if (imagesReaderSuffix.contains(ext.toLowerCase())) { if (!imagesWriterSuffix.contains(ext.toLowerCase())) { if (log.isDebugEnabled()) { log.debug("不支持当前配置的缩略图格式:{}", fileStorageProperties.getThumbnailSuffix()); } } else { try { uploadPretreatment.thumbnail(120, 120); } catch (Exception e) { if (log.isDebugEnabled()) { log.debug("生成缩略图失败: {}", e.getMessage()); } } } } } return uploadPretreatment.upload(); } /** * 获取文件列表 */ public static List<FileListVO> getFileList(FileParameter parameter) { FileStorage fileStorage = fileStorageService.getFileStorage(); if (!fileStorage.isSupportListFiles().getIsSupport()) { throw new DataException(MsgCode.FA054.get()); } process(parameter); List<FileListVO> listVOS = new ArrayList<>(); getFileListInner(parameter, fileStorage, listVOS); return listVOS; } private static void getFileListInner(FileParameter parameter, FileStorage fileStorage, List<FileListVO> resultFiles) { process(parameter); ListFilesPretreatment listFilesPretreatment = new ListFilesPretreatment(); listFilesPretreatment.setPath(parameter.getRemotePath()); listFilesPretreatment.setMaxFiles(fileStorage.isSupportListFiles().getSupportMaxFiles()); ListFilesResult listFilesResult = fileStorage.listFiles(listFilesPretreatment); List<RemoteFileInfo> fileList = listFilesResult.getFileList(); for (int i = 0; i < fileList.size(); i++) { RemoteFileInfo remoteFileInfo = fileList.get(i); FileListVO fileListVO = new FileListVO(); fileListVO.setFileId(i + ""); fileListVO.setFileName(remoteFileInfo.getFilename()); fileListVO.setFilePath(remoteFileInfo.getPath()); fileListVO.setFileType(remoteFileInfo.getExt()); fileListVO.setFileSize(String.valueOf(remoteFileInfo.getSize())); fileListVO.setFileTime(DateUtil.dateFormat(remoteFileInfo.getLastModified())); resultFiles.add(fileListVO); } if (parameter.isRecursive()) { List<RemoteDirInfo> dirList = listFilesResult.getDirList(); for (RemoteDirInfo remoteDirInfo : dirList) { parameter.setRemotePath(remoteDirInfo.getPath() + remoteDirInfo.getName() + "/"); getFileListInner(parameter, fileStorage, resultFiles); } } } /** * 获取命名空间 */ // public static String getBucketName() { // String bucketName = fileStorageService.getFileStorage().getBucketName(); // if (StringUtil.isNotEmpty(bucketName)) { // return bucketName + "/"; // } // return bucketName; // return ""; // } /** * 获取命名空间 */ // public static String getDomain() { // return fileStorageService.getFileStorage().getDomain(); // return ""; // } /** * 删除文件 */ public static boolean removeFile(FileParameter parameter) { process(parameter); FileDetail fileDetail = getFileDetail(parameter); return fileStorageService.delete(fileDetail.getUrl()); } // /** // * 下载文件 // * // * @param path // * @param fileName // */ // public static void downloadFile(String path, String fileName) { // String fileUrl = getFileUrl(path, fileName); // FileInfo fileInfo = fileStorageService.getFileInfoByUrl(fileUrl); // fileStorageService.download(fileInfo).file(fileUrl); // } /** * 下载文件 */ public static File downloadFileToLocal(FileParameter parameter) { process(parameter); if (StringUtil.isEmpty(parameter.getLocalFileName())) { parameter.setLocalFileName(parameter.getRemoteFileName()); } if (StringUtil.isEmpty(parameter.getLocaFilelPath())) { parameter.setLocaFilelPath(parameter.getRemotePath()); } FileStorageProperties.LocalPlusConfig localStorageConfig = getLocalStorageConfig(); String localPath = Tools.getNotNull(localStorageConfig.getStoragePath(), StrUtil.EMPTY) + Tools.getNotNull(localStorageConfig.getBasePath(), StrUtil.EMPTY) + Tools.getNotNull(parameter.getLocaFilelPath(), StrUtil.EMPTY); FileInfo fileInfo = getFileInfo(parameter); File localFile = new File(localPath, parameter.getLocalFileName()); if(!fileStorageProperties.getDefaultPlatform().startsWith(GenerateConstant.LOCAL) || !Objects.equals(parameter.getRemotePath(), parameter.getLocaFilelPath()) || !Objects.equals(parameter.getRemoteFileName(), parameter.getLocalFileName())) { fileStorageService.download(fileInfo).file(localFile); } return localFile; } /** * 下载文件得到字节数组 */ public static byte[] downloadFile(FileParameter parameter) { process(parameter); FileInfo fileInfo = getFileInfo(parameter); return fileStorageService.download(fileInfo).bytes(); } /** * 下载文件到文件 */ public static void downloadFile(FileParameter parameter, File targetFile) { process(parameter); FileInfo fileInfo = getFileInfo(parameter); fileStorageService.download(fileInfo).file(targetFile); } /** * 下载文件到输出流 */ public static void downloadFile(FileParameter parameter, OutputStream outputStream) { process(parameter); FileInfo fileInfo = getFileInfo(parameter); fileStorageService.download(fileInfo).outputStream(outputStream); } /** * 下载文件到输入流, 自定义处理 */ public static void downloadFile(FileParameter parameter, Consumer<InputStream> fileConsumer) { process(parameter); FileInfo fileInfo = getFileInfo(parameter); fileStorageService.download(fileInfo).inputStream(fileConsumer); } // /** // * 下载文件得到流 // * // * @param path // * @param fileName // * @param origin // */ // public static ByteArrayOutputStream downloadFilStream(String path, String fileName, boolean origin) { // FileInfo fileInfo = getFileInfo(path, fileName, origin); // ByteArrayOutputStream out = new ByteArrayOutputStream(); // fileStorageService.download(fileInfo).outputStream(out); // return out; // } /** * 默认存储平台 * * @param * @return */ public static String getDefaultPlatform() { return fileStorageProperties.getDefaultPlatform(); } /** * 判断文件是否存在 * * @return */ public static boolean exists(FileParameter parameter) { process(parameter); FileInfo fileInfo = getFileInfo(parameter); return fileStorageService.exists(fileInfo); } public static void process(FileParameter parameter) { String typePath = FilePathUtil.getFilePath(parameter.getRemotePath()); String fileName = parameter.getRemoteFileName(); if (StringUtil.isNotEmpty(fileName) && fileName.contains(",")) { typePath += fileName.substring(0, fileName.lastIndexOf(",") + 1).replaceAll(",", "/"); fileName = fileName.substring(fileName.lastIndexOf(",") + 1); } typePath = XSSEscape.escapePath(typePath); fileName = XSSEscape.escapePath(fileName); parameter.setRemotePath(typePath); parameter.setRemoteFileName(fileName); } /** * 根据路径和文件名删除文件 * * @return */ public static boolean deleteFileByPathAndFileName(FileParameter parameter) { FileInfo fileInfo = getFileInfo(parameter); return fileStorageService.delete(fileInfo); } } 我使用的jnpf框架
最新发布
10-22
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值