2010-07-13 23 views
1

Dans le script Action, FileReference.browse() est appelée.L'objet Action Script FileReference peut-il être envoyé à Javascript et converti en objet File?

Je voudrais envoyer le fichier choisi à Javascript et le convertir en objet de fichier, juste comme si j'appuyais sur le bouton Browse du <input type='file /> et ai obtenu l'objet de dossier.

J'ai besoin de cela pour pouvoir afficher la vignette de l'image comme montré here.

Peut-être que, au lieu de transmettre l'ensemble de l'objet, il est possible d'envoyer uniquement les informations requises pour la vignette de l'objet?

Merci!

Répondre

1

Je ne pense pas qu'il existe un moyen de créer un objet File. Par exemple, essayez ceci:

var f = new File; 

Je reçois une exception "Impossible de convertir WrappedNative en fonction." Si vous regardez the docs for File, aucun constructeur n'est décrit. En outre, la plupart des attributs sont en lecture seule. J'interpréterais cela comme signifiant que seul le navigateur peut créer un objet File. Gardez à l'esprit que si vous pouviez créer un objet File en spécifiant le chemin d'accès à un fichier, il serait facile de télécharger des fichiers sans le consentement de l'utilisateur. Ce serait un sérieux trou de sécurité.

Vous trouverez peut-être plus pratique d'utiliser uniquement Flash ou seulement HTML5 pour cela.

+0

OK, merci beaucoup pour votre réponse! –

1

Pour les personnes essayant de le faire. Que peut-on faire est:

  1. Conversion des données FileReference byterray à base64 et le mettre dans une chaîne
  2. L'envoi de cette chaîne à javascript avec ExternalInterface

J'utilise ce modèle dans des contextes où je veux avoir une vue d'ensemble du contenu des fichiers binaires. Même une grande image peut être envoyée en utilisant cette approche. Le fichier peut alors être consulté en javascript en utilisant une URI données avec le MIME approprié:

données: image/png; base64, [données] ou données: octet/flux, [données]

Depuis que je suis postant près de 2 ans et demi après le premier post, nous pouvons maintenant le faire dans tous les navigateurs populaires.

+0

C'est ce que je fais, fonctionne dans Chrome, mais Firefox 41 se bloque horriblement avec des fichiers de plus de 4 Mo. Firefox ne règle pas. –

+0

Ouais, à 4 Mo, ça commence à être énorme pour un URI. –