2011-12-14 10 views
9

Jestem obecnie przesyłając plik za pośrednictwem HTTP POST z połączenia tak:PowerShell odpowiednik curl HTTP POST do transferu plików

curl --verbose --data-binary @C:\Projects\TestUploadFiles\TestFile1.csv "http://client.abc.com/submit?username=UserX&password=PasswordHere&app=test1&replacejob=TestNewJob&startjob=n" 

To działa prawidłowo. Jednak codziennie mam do załadowania około 3000 plików - każdy plik w moim katalogu. Myślałem o napisaniu pliku wsadowego, który ma wiele poleceń cURL, po jednym dla każdego pliku. Ale to zostawiłoby mnie z napowietrzeniem otwierania i zamykania połączenia raz dla każdego pliku, prawda?

Więc, rozważam PowerShell. Nie znam tego, ale wierzę, że mogę w tym celu użyć WebRequest.

Czy to byłaby dobra opcja? Jakieś wskazówki dotyczące kodu?

Odpowiedz

14

Teoretycznie następujących ...

curl --verbose --data-binary @C:\Projects\TestUploadFiles\TestFile1.csv "http://client.abc.com/submit?username=UserX&password=PasswordHere&app=test1&replacejob=TestNewJob&startjob=n" 

To może być zastąpiony za pomocą System.Net.WebClient.UploadFile. Na przykład, aby przesłać wszystkie pliki CSV w bieżącym katalogu:

$wc = new-object System.Net.WebClient 
ls *.csv | foreach { 
    $wc.UploadFile('http://client.abc.com/submit?username=UserX&password=PasswordHere&app=test1&replacejob=TestNewJob&startjob=n', $_.FullName) 
} 
+0

Dzięki Scott! To działa dla mnie. – Sylvia

+0

Miło to słyszeć! –