Maison > Questions et réponses > le corps du texte
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 :
世界只因有你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 :
为情所困2017-05-15 16:51:07
Bonjour, laissez-moi d'abord répondre à vos deux prochaines questions :
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.
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
给我你的怀抱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