首页 > 解决方案 > 代号一个图像选择器给出了错误的路径

问题描述

我想上传一个代号为一个的图像,问题是当我上传它时,我得到了错误的图像名称和路径,让我解释一下,所以这是代码:

 imaged.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent evt) {
            Display.getInstance().openImageGallery(new ActionListener() {
                public void actionPerformed(ActionEvent ev) {
                    if (ev != null && ev.getSource() != null) {
                        String filePath = (String) ev.getSource();
                        int fileNameIndex = filePath.lastIndexOf("/") +1;
                        String fileName = filePath.substring(fileNameIndex);
                        System.out.println("image     : "+  fileName);


                    }
                }
            });
        }
    });
    c3.add(imaged);

我想获取图像名称以将其插入到我的数据库中,我得到的 lint 是:

C:/Users/Emel/AppData/Local/Temp/temp8005230168902905005..png

我选择的图像托管在 www 文件夹下的 wamp 服务器上:

http://localhost/PiWeb1/TeamFlags/es.png

即使文件名错误,这也是错误的,我怎样才能获得真实的路径和文件名!

标签: codenameone

解决方案


这在设备上有点问题。当涉及到文件系统/媒体时,它们非常不一致,因此我们尝试通过将选择复制到一边来复制模拟器中的一些问题。

原因很简单,假设您可以访问手机的图像目录,您可以在未经用户同意的情况下读取和上传所有图像。因此,他们的操作系统会复制图像并仅允许您访问该数据。

您可能会在设备上获得更好的运气,否则您可能会获得更好的运气:https ://www.codenameone.com/blog/native-file-open-dialogs.html

作为旁注,您的 URL 不会是 http URL,而是文件 URL。


推荐阅读