History
Introduction
API Category
Making API Requests
Region APIs
Instance APIs
Cloud Hosting Cluster APIs
Image APIs
Instance Launch Template APIs
Placement Group APIs
Key APIs
Security Group APIs
Network APIs
Data Types
Error Codes
服务地址/v3/push/package/upload
zip\\txt\\csv 文件;大小保持在100MB以内。zip 压缩包中可包含:单个 .txt 或 .csv 文件(不能嵌套文件夹)。txt 文件要求:(1)编码为 UTF-8;(2)每行一个账号,账号长度限制为 [2, 100]。csv 文件要求:(1)只能有一列;(2)每行一个账号,账号长度限制为 [2, 100]。参数名 | 类型 | 是否必须 | 参数说明 |
file | form-data | 是 | 账号包格式及大小: 支持 zip\\txt\\csv 文件;大小保持在100MB以内 zip 压缩包中可包含:单个 .txt 或 .csv 文件(不能嵌套文件夹) .txt 文件要求:(1)编码为 UTF-8;(2)每行一个账号,账号长度限制为 [2, 100] .csv 文件要求:(1)只能有一列;(2)每行一个账号,账号长度限制为 [2, 100] |
参数名 | 类型 | 是否必须 | 参数说明 |
retCode | Integer | 是 | 错误码 |
errMsg | String | 是 | 请求出错时的错误信息 |
uploadId | Integer | 是 | 当上传文件成功时,将反馈一个正整数 uploadId ,代表上传文件 ID,提供给后续号码包接口进行推送 |
import base64from pip._vendor import requestsfrom pip._vendor.urllib3 import encode_multipart_formdatadef upload(url, filePath, accessId, secret, data={}, header={}):openFile = open(filePath, 'rb')data['file'] = (openFile.name, openFile.read())encode_data = encode_multipart_formdata(data)data = encode_data[0]header['Content-Type'] = encode_data[1]authInfo = accessId + ":" + secretheader['Authorization'] = "Basic " + str(base64.b64encode(bytes(authInfo, encoding="utf8")),encoding="utf8")r = requests.post(url, headers=header, data=data)print(r.json())
func Upload(url string, filePath string, accessId string, secret string)(resp string , err error) {fp, err := os.Open(filePath)if err != nil {return resp, err}defer fp.Close()body := &bytes.Buffer{}writer := multipart.NewWriter(body)defer writer.Close()part, err := writer.CreateFormFile("file", filepath.Base(fp.Name()))if err != nil {return resp, err}io.Copy(part, fp)writer.Close()httpReq, err := http.NewRequest(http.MethodPost, url, body)if err != nil {return resp, err}httpReq.Header.Add("Content-Type", writer.FormDataContentType())authInfo := base64.StdEncoding.EncodeToString([]byte(accessId + ":" + secret))httpReq.Header.Add("Authorization", fmt.Sprintf("Basic %s", authInfo))cli := &http.Client{}httpResp, err := cli.Do(httpReq)if err != nil {return resp, err}defer httpResp.Body.Close()data, err := ioutil.ReadAll(httpResp.Body)if err != nil {return resp, err}if httpResp.StatusCode != http.StatusOK {return resp, fmt.Errorf("response error, status: %s, body: %s", httpResp.Status, string(data))}resp = string(data)return resp, nil}
public string Upload(string url, string filePath, uint accessId, string secretKey){var tmp = accessId.ToString() + ":" + secretKey;var sign = System.Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(tmp));MultipartFormDataContent form = new MultipartFormDataContent();var content = new StreamContent(new FileStream(filePath, FileMode.Open));content.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data"){Name = "file",FileName = Path.GetFileName(filePath)};form.Add(content);using(HttpClient client = new HttpClient()){client.DefaultRequestHeaders.Add("Authorization","Basic " + sign);client.DefaultRequestHeaders.ExpectContinue = true;var response = (client.PostAsync(url, form)).Result;var result = response.Content.ReadAsStringAsync().Result;if (response.StatusCode != HttpStatusCode.OK) {throw new Exception(result);}return result;}}
function upload($url, $file, $accessId, $secretkey) {$sign = base64_encode($accessId . ":" . $secretKey);$headers = array("Content-type: multipart/form-data", "Authorization: Basic " . $sign);$cfile = new \\CURLFile($file,'multipart/form-data',basename($file));$options = array(CURLOPT_HTTPHEADER => $headers,CURLOPT_HEADER => 0,CURLOPT_SSL_VERIFYPEER => false,CURLOPT_SSL_VERIFYHOST => 0,CURLOPT_POST => 1,CURLOPT_URL => $url,CURLOPT_RETURNTRANSFER => 1,CURLOPT_TIMEOUT => 10000,CURLOPT_POSTFIELDS => array("file" => $cfile));$ch = curl_init();curl_setopt_array($ch, $options);$ret = curl_exec($ch);$error = curl_error($ch);$info = curl_getinfo($ch);curl_close($ch);if ($error != "") {throw new \\Exception($error);}$code = $info["http_code"];if ($code != 200) {throw new \\Exception("status: " . $code . ", message: " . $ret);}return $ret;}```
public JSONObject Upload(String url, String filePath, String accessId, String secret) {OkHttpClient client = new OkHttpClient();File file = new File(filePath);RequestBody requestBody = new MultipartBody.Builder().setType(MultipartBody.FORM).addFormDataPart("file", file.getName(),RequestBody.create(MediaType.parse("multipart/form-data"), file)).build();String authString = accessId+ ":" + secret;byte[] authEncBytes = Base64.encodeBase64(authString.getBytes());String authStringEnc = new String(authEncBytes);Request.Builder builder = new Request.Builder().url(url).post(requestBody).addHeader("Authorization", "Basic " + authStringEnc);Request request = builder.build();JSONObject jsonRet = null;Response response = null;try {response = client.newCall(request).execute();if(response.code() == 200){String retMsg = response.body().string();jsonRet = new JSONObject(retMsg);}else{jsonRet = new JSONObject();jsonRet.put("retCode", 10101);jsonRet.put("errMsg", "CallApiError,HttpStatus Code:" + response.code());}} catch (IOException e) {jsonRet = new JSONObject();jsonRet.put("retCode", 10100);jsonRet.put("errMsg", e.getMessage());}finally {if (response != null) {response.close();}}return jsonRet;}
struct memory {char *data;size_t size;memory(): data(NULL), size(0) {}~memory() {if (data) {free(data);}}};static size_t callback(void *data, size_t size, size_t nmemb, void *userp){size_t realsize = size * nmemb;struct memory *mem = (struct memory *)userp;char *ptr = (char *)realloc(mem->data, mem->size + realsize + 1);if(ptr == NULL)return 0;mem->data = ptr;memcpy(&(mem->data[mem->size]), data, realsize);mem->size += realsize;mem->data[mem->size] = 0;return realsize;}std::string upload(const std::string url, const std::string &file, uint32_t accessId, const std::string &secretKey, std::string &err) {CURL *pcurl = curl_easy_init();if (pcurl == NULL) {err.assign("curl_easy_init error");return "";}struct curl_httppost *post = NULL;struct curl_httppost *last = NULL;std::string base;//for unix/linuxsize_t pos = file.find_last_of("/");if (pos >= 0) {base = file.substr(pos + 1);}//for windowspos = file.find_last_of("\\\\");if (pos >= 0) {return base = file.substr(pos + 1);}curl_formadd(&post, &last, CURLFORM_PTRNAME, "file", CURLFORM_FILE, file.c_str(), CURLFORM_FILENAME, base.c_str(), CURLFORM_END);char buf[128];char dst[128];char authInfo[256];snprintf(buf, sizeof(buf), "%u:%s", accessId, secretKey.c_str());Base64encode(dst, buf, strlen(buf));snprintf(authInfo, sizeof(authInfo), "Authorization: Basic %s", dst);curl_slist *plist = NULL;plist = curl_slist_append(plist, "Content-Type: multipart/form-data");plist = curl_slist_append(plist, authInfo);curl_easy_setopt(pcurl, CURLOPT_CONNECTTIMEOUT, 10);curl_easy_setopt(pcurl, CURLOPT_TIMEOUT, 10);curl_easy_setopt(pcurl, CURLOPT_POST, true);curl_easy_setopt(pcurl, CURLOPT_HTTPHEADER, plist);curl_easy_setopt(pcurl, CURLOPT_URL, url.c_str());curl_easy_setopt(pcurl, CURLOPT_HTTPPOST, post);curl_easy_setopt(pcurl, CURLOPT_WRITEFUNCTION, callback);struct memory chunk;curl_easy_setopt(pcurl, CURLOPT_WRITEDATA, (void *)&chunk);curl_easy_setopt(pcurl, CURLOPT_NOSIGNAL, 1);CURLcode res = curl_easy_perform(pcurl);curl_slist_free_all(plist);// Check for errorsif (res != CURLE_OK){char buf[1024];snprintf(buf, sizeof(buf), "curl_easy_perform error: %s", curl_easy_strerror(res));err.assign(buf);curl_easy_cleanup(pcurl);return "";}long status = 0;curl_easy_getinfo(pcurl, CURLINFO_RESPONSE_CODE, &status);curl_easy_cleanup(pcurl);if (status != 200) {char buf[1024];snprintf(buf, sizeof(buf), "%ld %s", status, chunk.data);err.assign(buf);return "";}std::string ret;ret.assign(chunk.data);return ret;}```
文档反馈