硬汉嵌入式论坛

 找回密码
 立即注册
查看: 824|回复: 4
收起左侧

如何在拷贝文件进U盘前获取到文件名称

[复制链接]

34

主题

198

回帖

300

积分

高级会员

积分
300
发表于 2024-7-5 17:00:26 | 显示全部楼层 |阅读模式
本帖最后由 LinY 于 2024-7-5 17:05 编辑

想问下,如何在拷贝电脑文件进STM32F429挂载的U盘前获取文件名称。
想判断过滤下 如.exe、.bat等等这些后缀的文件 直接提示不给拷贝进去。



STM32F429IGT6通过SDIO加了个EMMC,挂载到高速U盘。
用的HAL库。

当然也用了Fatfs。




回复

使用道具 举报

7

主题

54

回帖

75

积分

初级会员

积分
75
发表于 2024-7-5 21:05:00 | 显示全部楼层
RL-USB,通过USBH_MSC.c这段注释,可以看出来,USBH_MSC文件所有操作都是调用文件系统实现的。创建文件前,先过滤一下文件名即可
* To access files on a USB storage device use below code sample:
*   int32_t media_status, media_status_previous = USBH_MSC_ERROR_DRIVE;
*   for (;;) {
*     media_status = USBH_MSC_DriveGetMediaStatus (drive_name);
*     if ((media_status          == USBH_MSC_OK) &&
*         (media_status_previous != USBH_MSC_OK)) {
*       switch (USBH_MSC_DriveMount (drive_name)) {
*         case USBH_MSC_OK:
*           fopen (...);
*           break;
*         case USBH_MSC_ERROR_FORMAT:
*           fformat (drive_name, "/FAT32");
*           fopen (...);
*           break;
*         case USBH_MSC_ERROR:
*           // Mount error
*           break;
*       }
*     }
*     media_status_previous = media_status;
*     osWait (1000);   // polling interval for media status (1 second)
*   }
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116779
QQ
发表于 2024-7-6 08:43:30 | 显示全部楼层
事先将不想被复制的文件设置隐藏是不是可行。不过前提是电脑设置隐藏文件不显示。
回复

使用道具 举报

34

主题

198

回帖

300

积分

高级会员

积分
300
 楼主| 发表于 2024-7-6 08:50:08 | 显示全部楼层
eric2013 发表于 2024-7-6 08:43
事先将不想被复制的文件设置隐藏是不是可行。不过前提是电脑设置隐藏文件不显示。

电脑那边我这边控制不了
回复

使用道具 举报

7

主题

54

回帖

75

积分

初级会员

积分
75
发表于 2024-7-6 16:33:14 | 显示全部楼层
试试
FRESULT f_open (
        FIL* fp,                        /* Pointer to the blank file object */
        const TCHAR* path,        /* Pointer to the file name */
        BYTE mode                        /* Access mode and open mode flags */
)
{
        FRESULT res;
        DIR dj;
        FATFS *fs;
#if !FF_FS_READONLY
        DWORD cl, bcs, clst, tm;
        LBA_t sc;
        FSIZE_t ofs;
#endif
        DEF_NAMBUF
  
  //begin1
  if ((strstr (path, ".exe") != NULL)  &&  ((mode & FA_CREATE_NEW) || (mode & FA_CREATE_ALWAYS)))
  {
    return FR_DENIED;
  }
  //end1

        if (!fp) return FR_INVALID_OBJECT;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-7-6 16:44 , Processed in 0.219041 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表