recherche

Maison  >  Questions et réponses  >  le corps du texte

Youpai Cloud Storage - Puis-je utiliser l'API de soumission de formulaire via Angular.JS

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é ?
高洛峰高洛峰2779 Il y a quelques jours680

répondre à tous(4)je répondrai

  • 世界只因有你

    世界只因有你2017-05-15 16:51:07

    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

    répondre
    0
  • 为情所困

    为情所困2017-05-15 16:51:07

    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.

    répondre
    0
  • PHP中文网

    PHP中文网2017-05-15 16:51:07

    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

    répondre
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-15 16:51:07

    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

    répondre
    0
  • Annulerrépondre