我一直在努力争取如何完成这项工作几个小时.我正在尝试通过HTTP-PUT将文件发送到eXist数据库.有服务器的用户身份验证,所以我试图做这样的事情:
我有要将文档输入的URL我有eXist DB的用户名和密码我有需要通过PUT发送的内容
我尝试使用cURL,但它会无声地失败我尝试使用PHP流,但不断收到"错误201 /创建"但实际上没有创建文件.
任何有关这方面的帮助都将非常感激.
这是我尝试使用PHP流的一些示例代码
$data = file_get_contents($tmpFile);
$header = array(
"Authorization: Basic " . base64_encode($this->ci->config->item('ws_login') . ':' . $this->ci->config->item('ws_passwd')),
"Content-Type: text/xml"
);
$params = array(
'http' => array(
'method' => 'PUT',
'header' => $header,
'content' => $data));
$ctx = stream_context_create($params);
$response = file_get_contents($url, false, $ctx);
编辑:我想我已经弄清楚如何做二进制数据部分.在代码中仔细检查它,但我很确定我做对了.现在,我在尝试按照Vimeo API文档中的描述完成上传时遇到了新错误
编辑2:将 .debug()添加到OAuthService并更新输出.
原始问题:我正在尝试使用Vimeo API(流媒体方法)将视频上传到Vimeo .我正在使用scribe来授权我的应用,获取我的访问令牌并准备上传视频.在这个PUT的HTTP请求示例中,我只是不知道该做什么,Vimeo API文档说"你这里的文件的二进制数据":
PUT http://1.2.3.4:8080/upload?ticket_id=abcdef124567890 HTTP/1.1
主持人:1.2.3.4:8080
内容长度:339108
内容类型:video/mp4
....你的文件的二进制数据在这....
我可以得到罚单和标题.它只是,我该怎么做才能插入我的文件的二进制数据?
笔记:
这是我的put代码(记住,我正在使用scribe)
// Setup File (line 52)
File testUp = new File("C:/Users/Kent/Desktop/test.mp4");
String contentLength = Long.toString(testUp.length());
System.out.println("The content length is: " + contentLength);
byte[] fileBytes = ByteStreams.toByteArray(new FileInputStream(testUp));
// Upload file (line 58)
request = new OAuthRequest(Verb.PUT, endpoint);
request.addHeader("Content-Length", contentLength);
request.addHeader("Content-Type", "video/mp4");
request.addPayload(fileBytes);
response = signSendAndPrint(service, accessToken, request, "Upload PUT: " + …Run Code Online (Sandbox Code Playgroud) 你是怎么做HTTP PUT的?我正在使用的类似乎认为它正在执行PUT但是端点正在将其视为我做了GET.我做错了吗?
URL url = new URL("https://...");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("PUT");
OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream());
writer.write(xmlString);
writer.close();
System.out.println(conn.getRequestMethod());
String response = readInputStream(conn.getInputStream());
System.out.println(response);
Run Code Online (Sandbox Code Playgroud)
哪个是打印:
PUT
<same content as doing a GET>
Run Code Online (Sandbox Code Playgroud)
如果这个可以工作,我宁愿不包括另一个库...
我刚刚开始使用Web API,虽然我发现创建方法和我需要的一些配置非常容易,但现在我遇到了一个我不知道如何解决的问题.
一些将使用我的服务的应用程序非常旧,不支持DELETE和PUT方法(例如j2me应用程序)
我发现通过传递这样的东西可以做某种方法模拟:
_method=DELETE|PUT
Run Code Online (Sandbox Code Playgroud)
但是,我不确定Web API是否能够解释这一点,此外,我不知道如何做到这一点.出于这些原因,我正在考虑使用POST方法来处理更新和删除.话虽如此,如果不使用所有标准方法,我可以期待什么并发症?
一如既往,任何帮助都将受到极大的赞赏
提前致谢.
PD如果有人知道如何_method通过路由到DELETE()或PUT()来发布POST会很棒
我在PHP文档中读到了一些关于此的内容,但我不清楚:
最广泛使用的浏览器(IE,FF,Chrome,Safari,Opera,...)是否支持此PUT方法上传文件?
我应该写什么HTML来让浏览器通过PUT请求调用服务器?我的意思是,我需要写一个FORM与INPUT文件属性,只是替换属性method="POST"与method="PUT"?
在PHP文档(上面的链接)上,他们说PUT请求比POST上传文件时的请求要简单得多,还有这个优势,还有什么其他的优点/不同PUT之处POST?
有人可以告诉我如何在Objective-c中使用ASIHTTPRequest对象来上传UIImage对象吗?我需要将其转换为NSData对象吗?
(这是一个头像上传网址)
E.g.
UIImage *toUpload = [UIImage imageNamed:@"test.jpg"]
URL: "http://www.example.com/api/users/avatar/upload?access_token=12345"
RequestType: PUT
Run Code Online (Sandbox Code Playgroud) 我正在使用Flask开发Web应用程序.其中一个视图应该通过PUT请求接受上传的文件,但是我只能获得POST请求$ curl -F upload=@filename URL才能正常工作.随着PUT请求,如$ curl --upload-file filenname URL在request.filesImmutableMultiDict是空的.我是否在烧瓶中丢失了一些东西或者使用卷曲?
因此,我试图使自己熟悉GitHub API。我正在使用cURL命令来实现其一些基本功能。我可以正确获取基本授权和存储库创建。当前,我正在尝试使用其API在存储库中创建文件,并且面临“ message”:“ Not Found”错误作为响应。
他们的文档表明:
PUT /repos/:owner/:repo/contents/:path
Run Code Online (Sandbox Code Playgroud)
我想出了这个作为cURL等效项:
curl -H 'Authorization: <token>' -d '{"path": "test.txt", "message": "Initial Commit", "committer": {"name": "<name>", "email": "<email>"}, "content": "bXkgbmV3IGZpbGUgY29udGVudHM=", "note":"Test Commit"}' https://api.github.com/repos/InViN-test/test_repo1/contents/test.txt
Run Code Online (Sandbox Code Playgroud)
我认为问题出在我最后使用的API URL,但我似乎无法弄清楚URL的外观。
这是我用来创建存储库的内容:
curl -i -H 'Authorization: <token>' -d '{"name": "test_repo1", "message": "Initial Commit", "committer": {"name": "<name>", "email": "<email>"}, "content": "bXkgbmV3IGZpbGUgY29udGVudHM=", "note":"Test Commit"}' https://api.github.com/user/repos
Run Code Online (Sandbox Code Playgroud)
我使用的存储库创建URL如下:user / repos作为语法。同样,我尝试使用user / repos / repo,但是没有用。
谁能对此有所启示?
我经历了各种StackOverflow问题,其中许多似乎相似,但没有一个真正提供示例,因此我可以找出错误的出处。
编辑:感谢蒂姆沃尔拉的答案。
使用GitHub API在存储库中创建文件的有效命令语法:
curl -i -X PUT -H 'Authorization: token <token_string>' -d '{"path": "<filename.extension>", "message": "<Commit …
我正在尝试使用 PUT 方法使用 Mojo::UserAgent 上传文件,文件可能很大,而不是将文件内容作为标量传递,还有其他方法吗?
这是我尝试过的:
use strict;
use warnings;
use Mojo::UserAgent;
use Mojo::Asset::File;
my $ua = Mojo::UserAgent->new;
my $file = $ARGV[0];
die("File not found") unless(-f $file);
my $a_file = Mojo::Asset::File->new(path => $file);
my $tx = $ua->put('https://postman-echo.com/put' => {'X-Test' => '123G'} => $a_file);
print $tx->success;
print "\n\n";
print $tx->result->body;
print "\n\n";
print $tx->req->text;
Run Code Online (Sandbox Code Playgroud) _context.Entry(entity).State = EntityState.ModifiedASP.NET EF Core和之间有什么区别_context.Entity.Update(entity)?例如:
[HttpPut]
public async Task<ActionResult<Student>> PutStudent(Student student)
{
**_context.Entry(student).State = EntityState.Modified;**
await _context.SaveChangesAsync();
return student;
}
Run Code Online (Sandbox Code Playgroud)
[HttpPut]
public async Task<ActionResult<Student>> PutStudent(Student student)
{
**_context.Student.Update(student);**
await _context.SaveChangesAsync();
return student;
}
Run Code Online (Sandbox Code Playgroud) http-put ×10
c# ×2
curl ×2
file-upload ×2
java ×2
php ×2
asp.net-core ×1
dbcontext ×1
flask ×1
git ×1
github ×1
github-api ×1
http ×1
http-delete ×1
http-method ×1
iphone ×1
java-me ×1
mojolicious ×1
objective-c ×1
perl ×1
python ×1
scribe ×1
stream ×1
uiimage ×1
vimeo ×1