Youpai Cloud Storage - Puis-je utiliser l'API de soumission de formulaire via Angular.JS
高洛峰
高洛峰 2017-05-15 16:49:07
0
4
672

L'entreprise existante utilise entièrement l'application frontale Angular.JS monopage, et toutes les demandes sont envoyées via ajax.

Maintenant, je souhaite télécharger des fichiers directement sur Youpaiyun côté client. J'ai essayé le téléchargement de fichiers angulaires, mais le résultat soumis était

.

400 : pas d'acceptation, manque de signature

La capture des paquets a montré que les données du formulaire de politique et de signature n'étaient pas du tout soumises.
Voici ce que j'ai écrit :

    $scope.onFileSelect = function ($files) {
        var file = $files[0]; //这里我只传单个文件
        $scope.upload = $upload.upload({
            url: 'http://v0.api.upyun.com/youguess',
            method: 'POST',
            headers: {'Content-Type': 'multipart/form-data'},
            data: {
                signature: 'youguess',
                policy: 'youguess'
            },
            fileFormDataName: 'file',
            file: file,
            formDataAppender: function (formData, key, value) {
                if (angular.isArray(value)) {
                    angular.forEach(value, function(v) {
                        formData.append(key, v);
                    });
                } else {
                    formData.append(key, value);
                }
            }
        }).progress(function (event) {
            console.log(parseInt(100.0 * event.loaded / event.total));
        }).success(function (data, status, headers, config) {
            console.log(data);
        });
    };

J'ai fait référence à ceci et à ces problèmes de ce projet github

que dois-je faire ?

J'ai aussi deux questions :

  1. Je peux directement crypter la signature avec md5 et l'écrire. Y a-t-il un problème de sécurité si ce md5 est écrit directement sur le client ?
  2. La politique peut-elle être générée par encodage base64 en js Parce que je pense que la démo officielle est générée en php. S'il peut être généré sur le front-end, l'écriture de ce processus sur le front-end entraînera-t-elle également des problèmes de sécurité ?
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

répondre à tous(4)
世界只因有你

J'ai référencé ce problème
Tant que le problème de sécurité de la signature est résolu, le fichier peut être téléchargé avec succès. Merci à tous.

Solution :

  • Supprimer les en-têtes
  • Supprimer formDataAppender
为情所困

Bonjour, laissez-moi d'abord répondre à vos deux prochaines questions :

    La signature de
  • signature inclut form_api_secret, donc si vous l'écrivez directement sur le front-end, il y aura effectivement des problèmes de sécurité : si d'autres personnes obtiennent votre form_api_secret, elles peuvent rédiger leur propre formulaire et le soumettre le fichier dans votre espace et utilisez votre trafic.

  • La politique peut être générée sur le frontend en utilisant base64. Bien que la politique soit le contenu du paramètre encode et qu'il n'y ait pas de problème de sécurité, mais à cause de $signature = md5($policy.'&'.$form_api_secret);, il y aura toujours le problème de sécurité mentionné ci-dessus.

Concernant la question du code, @PenaFong a été invité à y répondre.

Ty80

La signature est générée en demandant au backend si nécessaire, et le form_api_secret sera exposé une fois calculé sur le frontend

给我你的怀抱

http://stackoverflow.com/questions/24443246/angularjs-how-to-upload-multipart-form-data-and-a-file
http://uncorkedstudios.com/blog/multipartformdata-file -télécharger-avec-angularjs

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal