2012-11-18 27 views
9

Tôi đang cố gắng tải lên một tệp từ Linux để thêm thông tin bằng thông tin xác thực đăng nhập của tôi. Tôi sử dụng tiện ích cURL để đạt được điều này. Tải lên thành công.Làm thế nào để tự động tải lên và kiểm tra trong các tập tin để sharepoint sử dụng curl?

Lệnh được sử dụng là: curl --ntlm --user username:password --upload-file myfile.txt -k https://sharepointserver.com/sites/mysite/myfile.txt tùy chọn -k được sử dụng để khắc phục lỗi chứng chỉ cho trang web chia sẻ không an toàn.

Tuy nhiên, tệp được tải lên này sẽ hiển thị trong chế độ xem "đã xem" (mũi tên màu xanh lá cây) trong phần bổ sung từ thông tin đăng nhập của tôi. Do đó, tệp này không tồn tại đối với người dùng từ các lần đăng nhập khác.

Thông tin đăng nhập của tôi có ưu thế truy cập ghi vào SharePoint.

Bất kỳ ý tưởng nào về cách "đăng ký" tệp này để chia sẻ với cURL để tệp có thể được xem từ thông tin đăng nhập của bất kỳ ai?

Trả lời

1

Tôi không có sẵn curl để kiểm tra ngay bây giờ nhưng bạn có thể thời trang để lấy thông tin sau.

Nhận và kiểm tra được xử lý bởi /_layouts/CheckIn.aspx

Các trang có các biến chuỗi truy vấn sau đây:

Danh sách - Một GUID để xác định danh sách hiện hành.

Tên tệp - Tên của tệp có phần mở rộng.

Nguồn - Url đầy đủ đến trang allitems.aspx trong thư viện.

Tôi đã có thể tải trang CheckIn.aspx một cách chính xác chỉ bằng cách sử dụng tham số FileName và Source và bỏ qua tham số Danh sách. Điều này là tốt bởi vì bạn không cần phải tìm ra cách để tra cứu Danh sách GUID.

Các postbacks trang CheckIn.aspx cho chính nó với các thông số hình thức sau đây để điều khiển checkin:

PostBack - boolean set là true.

CheckInAction - chuỗi thiết lập để ActionCheckin

KeepCheckout - thiết lập để 1 để giữ thanh toán và từ 0 đến tiếp tục kiểm tra trong

CheckinDescription - chuỗi văn bản

Gọi này trong curl như vậy

curl --data "PostBack = true & CheckinAction = ActionCheckin & KeepCheckout = 0 & CheckinDescription = SomeTextForCheckIn" http: // {Server của bạn Và Site} /_layouts/checkin.aspx?Source= {Full Url Để Library}/Forms/AllItems.aspx & FileName = {Doc Và Ext}

Như tôi đã nói tôi không có curl để kiểm tra nhưng tôi đã nhận này để làm việc bằng cách sử dụng tab Composer trong Fiddler 2

Tôi đang cố gắng này với curl bây giờ và có một vấn đề khiến nó hoạt động. Fiddler đang thực hiện yêu cầu dưới dạng POST. Nếu bạn cố gắng làm điều này như một yêu cầu GET, bạn sẽ nhận được một lỗi 500 nói rằng thuộc tính AllowUnsafeUpdates của SPWeb sẽ không cho phép yêu cầu này trên GET. Gửi yêu cầu dưới dạng POST sẽ sửa lỗi này.

Chỉnh sửa Tôi hiện đang kiểm tra nguồn checkin.aspx trong trình giải mã DotPeek và thấy một số tùy chọn bổ sung cho tham số ActionCheckin có thể có liên quan như ActionCheckinPublish và ActionCheckinFromClientPublish. Tôi sẽ cập nhật điều này với bất kỳ phát hiện bổ sung nào. Trang được đặt tại Microsoft.SharePoint.ApplicationPages.Checkin cho bất kỳ ai quan tâm.

0

Câu trả lời ở trên bằng Junx là chính xác. Tuy nhiên, biến Filename không chỉ là tên tệp tài liệu và phần mở rộng, mà còn bao gồm tên thư viện. Tôi đã có thể làm điều này để làm việc bằng cách sử dụng sau đây.

Ví dụ: http://domain/_layouts/Checkin.aspx?Filename=Shared Documents/filename.txt

0

Câu hỏi của tôi về Performing multiple requests using cURL có một ví dụ khá toàn diện sử dụng bash và cURL, mặc dù nó bị cần phải nhập lại mật khẩu cho mỗi yêu cầu.

Các vấn đề liên quan