2010-10-15 16 views
0

Il y a beaucoup de questions et de guides sur la façon d'obtenir des téléchargements de fichiers cURL à FAIRE, mais ce que je demande aujourd'hui, c'est comment ne pas l'obtenir pour faire cela.comment empêcher le curl de faire le téléchargement

Selon les options de papillotes docs sur php.net, boucle « sait » pour tenter un téléchargement de fichier par lorsqu'un param commence par « @ », puis le chemin de fichier local

Ceci est bien beau, mais Que faites-vous si vous avez besoin de POSTER quelque chose avec le texte littéral qui commence par @ et ne veut PAS faire un téléchargement?

J'envoie les données de poste comme celui-ci

 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $param_array); 

et mes params ressembler à ceci (tronquée pour la simplicité)

 
Array 
(
    [action] => "edit" 
    [title] => "my_pagename" 
    [text] => "@disabled" 
) 

(avant que quelqu'un demande, oui, cela est un mediawiki api appel, mais ce n'est pas pertinent)

maintenant, le curl_exec est juste de retour false (à défaut de trouver le fichier nommé "désactivé" pour poster je pense)

mon chemin de code pour le reste des params, et le POST réel est 100% testé fin, et travaille par ailleurs depuis plus d'un an, donc je suis 100% sûr que ce ce téléchargement « bug »

Répondre

3

Je crois que si vous postez la requête comme une chaîne, plutôt qu'un tableau, il devrait fonctionner:

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($param_array)); 

Il est un peu un hack, malheureusement ...

+0

nous avons un gagnant. ça marche. Maintenant que j'y pense, ça a du sens aussi. ce code ne fera jamais de téléchargement, donc je vais ajouter quelques captures pour détecter si le premier caractère est @, pour passer en mode requête. Merci! – Uberfuzzy

0

Complètement un tir dans l'obscurité, mais vous pourriez essayer d'échapper avec \

+0

essayé il, puisque @ isnt un char qui a besoin d'échapper, il envoie, et a sauvé le littéral \ – Uberfuzzy

+0

@uberfuzzy, j'irais probablement avec Sabeen, cela devrait fonctionner. – jps

1

avez-vous essayé urlencode là-dessus? je veux dire "%40disabled"

+0

nope, a également enregistré les caractères littéraux "%" "4" et "0". Son conçu pour vous permettre de sauvegarder ce que vous voulez, exactement comme c'est. – Uberfuzzy