как создать / инициализировать объект file, используя путь к файлу html5

#javascript #file #html #path

#javascript #файл #HTML #путь

Вопрос:

существует много примеров чтения локальных файлов с использованием html5, но, выбирая из списка файлов, моя проблема в том, что я хочу создать файловый объект вручную, подумайте о том, что у меня есть файл со ссылкой

 file:///G:/Users/txt.txt
  

я хочу, чтобы браузер открыл его ,

я думаю, что для этого нужно файл f=new File('file:///G:/Users/txt.txt');

мой вопрос в том, как создать / инициализировать объект file, используя путь к файлу?!

Комментарии:

1. Я бы не удивился, если бы это было невозможно из-за различий в файловой системе (UNIX против Соглашение Win и т.д.) и безопасность. Я, конечно, не хотел бы, чтобы мой браузер переопределял какой-либо мой файл без моего ведома об этом. 🙂

2. разработка мобильного приложения с использованием html5, попытка сохранить некоторые данные на SDCard и получить их снова

3. Я думаю, вам было бы проще полагаться на localStorage. Смотрите dev.w3.org/html5/webstorage .

4. мои сохраненные данные со временем становятся очень большими, я хочу сохранить их на SD

Ответ №1:

Я использовал приведенный ниже обходной путь, поскольку файл наследует интерфейс blob.

 var getFileBlob = function (url, cb) {
        var xhr = new XMLHttpRequest();
        xhr.open("GET", url);
        xhr.responseType = "blob";
        xhr.addEventListener('load', function() {
            cb(xhr.response);
        });
        xhr.send();
};

var blobToFile = function (blob, name) {
        blob.lastModifiedDate = new Date();
        blob.name = name;
        return blob;
};

var getFileObject = function(filePathOrUrl, cb) {
       getFileBlob(filePathOrUrl, function (blob) {
          cb(blobToFile(blob, 'test.jpg'));
       });
};

getFileObject('img/test.jpg', function (fileObject) {
     console.log(fileObject);
}); 
  

Комментарии:

1. Я должен использовать XMLHttpRequest даже для локального пути к файлу?

2. Работает ли это и на Android, хорошо ли работает на iOS, но Android, похоже, это не нравится ….?

Ответ №2:

На самом деле нет способа создать файл без разрешения пользователя. Необходимо будет нажать кнопку или что-то еще. Вам нужно будет создать data:uri для его сохранения. Вы можете найти дополнительную информацию с помощью веб-поиска или изhttp://en.wikipedia.org/wiki/Data_URI_scheme (не полный исходный код, но может показать, что возможно). Это очень ограничено в зависимости от телефона и операционной системы. URI данных ограничены при использовании IE.

Когда он запускается для загрузки, он сохраняется в расположении по умолчанию или указанном пользователем. Вы также можете захотеть изучить вызовы API, зависящие от поставщика / операционной системы, которые могут выполнять то, что вы описываете. Но, возможно, потребуется проверить разрешения до фактического разрешения доступа.