当我试图将一个文件从Angular 5.2上传到Laravel5.5应用程序时,我遇到了一个奇怪的行为。文件数据在服务器端不可见/不可访问。
我试过不同的头和方法,但似乎都失败了-
HTML:
<input type="file" (change)="handleFileInput($event.target.files)" multiple/>
handleFileInput(files: FileList) {
let formData = new FormData();
formData.append('file', files[0], files[0].name);
let headers = new HttpHeaders({
'Content-Type': 'application/json' // also tried 'multipart/form-data' and undefined
});
const req = new HttpRequest('POST', 'https://uploader.test/upload', formData, {headers: headers});
this.http.request(req).subscribe(res => console.log(res));
}
浏览器的开发人员工具显示提交了以下有效负载:
------WebKitFormBoundaryqZauUjRcPnD6wRmx
Content-Disposition: form-data; name="file"; filename="31562207_10106275826879542_6883202223082307584_n.jpg"
Content-Type: image/jpeg
------WebKitFormBoundaryqZauUjRcPnD6wRmx--
更新控制器代码真的超级简单
public function upload(Request $request)
{
logger('$request->all()', [$request->all()]); // prints $request->all() [[]] []
logger('Input::all()', [Input::all()]); // prints Input::all() [[]] []
logger('input.file', [ Input::file('file') ]); // prints input.file [null] []
logger('request.file', [ $request->file('file')]); // prints request.file [null] []
logger('$_POST', [$_POST]); // prints $_POST [[]] []
logger('$_FILES', [$_FILES]); // prints $_FILES [[]] []
}
当我用一个对象替换formData时:
const req = new HttpRequest('POST', 'https://uploader.test/upload', {
data: formData,
file: files[0],
test: '123'
}, {headers: headers});
this.http.request(req).subscribe(res => console.log(res));
让我们试试这个:
对于js文件处理,添加以下内容:
import {Injectable} from "@angular/core";
import {HttpClient} from "@angular/common/http";
@Injectable()
export class FileUploader{
constructor(public http:HttpClient){}
handleFileInput(files: any){
let xhr = new XMLHttpRequest();
let form = new FormData();
let token = "YOUR_TOKEN";
form.append('file', files[0], files[0].name);
xhr.onload = (e) =>{
console.log('file uploaded');
};
xhr.open('POST', "https://uploader.test/upload", true);
xhr.withCredentials = true;
xhr.setRequestHeader('Authorization', 'Bearer ' + token);
xhr.send(form);
}
}
现在,对于laravel端,添加以下内容:
public function saveFile(Request $request){
$path = $request->file('file')->store('uploaded');
return response()-json($path);
}
我试图在AWSS3中上传错误文件,但它显示错误,如“您试图访问的存储桶必须使用指定的endpoint寻址。请将所有未来的请求发送到此endpoint:”test9011960909。s3。亚马逊。com“ 我还指定了“区域”= 当我指定时,它正在工作 但我想把文件上传到主bucket的子文件夹中 我已经应用了AWS S3批准的答案:您试图访问的桶必须使用指定的终结点进行寻址 但仍然得到同样的错误,
当我试图上传文件到泽西岛时,我发现下面有一些异常,请帮助我解决。谢谢 html文档:- 阿贾克斯:- Java代码:- 例外情况:- 2015年6月17日下午7:55:34组织。阿帕奇。卡塔琳娜。果心StandardWrapperValve调用 请求头:-
如果有人帮我解决这个问题,我会非常感激。 我正在为我的项目使用codeigniter框架。并想将我的图像上传到amazon s3桶中。当我尝试使用S3.php文件时 string(92)“不支持您提供的授权机制。请使用AWS4-HMAC-SHA256。” 有人能帮我解决这个问题吗。
我使用这个网络服务上传一个文件使用泽西 //省省吧 //将上传的文件保存到新位置 当我执行我的代码我得到一个405错误!对这个问题有什么建议吗?
我正在尝试使用直接调用REST API的上载功能将图像从颤振应用程序发送到Cloudinary,但出现以下错误: 我试图将图像编码为字节数组,Base64Encode,但没有一个工作,我按照这个留档。 有人知道如何对文件进行编码以便我发送吗? 谢啦 编辑: 签名是可以的,因为我没有得到401错误(签名我从服务器接收。 这是cloudinary的url:\u cloudinary\u url=htt
正如上面的问题所描述的,我正在尝试将一个文件从okhttp3上传到服务器。 我总是收到‘你没有选择一个文件上传’在我的方法从codeIgniter部分。 这是我的代码 Android: 服务器代码: 我做错了什么?谢谢!