当我向后端发送一个整数时,我将它作为字符串接收,我不知道为什么?
var formdata = new FormData();
for (var i = 0; i < scope.user.values.length; i++) {
formdata.append('values[]', scope.user.values[i]);
}
Run Code Online (Sandbox Code Playgroud)
我以字符串形式接收值,而它们应该是整数
我有以下问题:
一个 html 表单,在 FormData 上使用 N 个复选框,通过 ajax 发送请求及其信息。在 PHP 上,$_POST['teste'] 变量不存在...
<form id="teste_form">
<input type="checkbox" name="teste[]">
<input type="checkbox" name="teste[]">
<input type="checkbox" name="teste[]">
<input type="checkbox" name="teste[]">...
</form>
<script>
var form_data_obj = new FormData( document.getElementById('teste_form') );
$.ajax({
...
data: form_data_obj
...
});
</script>
Run Code Online (Sandbox Code Playgroud)
我知道我可以在 PHP 上使用“if(isset(...))”,但我真的不喜欢这个解决方案。对我来说,最好的解决方案是从 FormData 对象向 PHP 发送一个空数组。
Obs:我尝试过类似的方法:
但没有成功... PHP 上的结果分别是: ["undefined"], ["0"]
我想在 PHP 中获取 $_POST ['test'] = []
那可能吗?
我看了几个问题和答案,但无法解决我的问题.我的代码如下:
HTML
<input type="file" id="file" accept="image/*" name="File" (change)="handleFileInput($event.target.files)">
<button type="button" mat-raised-button color="primary" (click)="uploadFileToActivity()">Upload</button>
Run Code Online (Sandbox Code Playgroud)
零件
handleFileInput(files: FileList) {
this.fileToUpload = files.item(0);
}
uploadFileToActivity() {
this._dishAddService.postFile(this.fileToUpload).subscribe(data => {
}, error => {
console.log(error);
});
}
Run Code Online (Sandbox Code Playgroud)
服务
postFile(fileToUpload: File): Observable<boolean> {
const formData: FormData = new FormData();
formData.append('fileKey', fileToUpload, fileToUpload.name);
let headers = new Headers({ 'Content-Type': 'application/json' });
headers.append('Content-Type', 'multipart/form-data');
let options = new RequestOptions({ headers: headers, method: 'post' });
return this.http.post(this.httpRequestUrl + 'api/dish/UploadDishImage', formData, options)
.map(
(response => response.json()))
.catch(CommonFunctionService.handleError);
}
Run Code Online (Sandbox Code Playgroud)
API …
我想部分更新一组数据和一个图像文件。我的图像已更新,但其他数据未更新。这是我的代码示例:
updateUsersData() {
const { gender, phone, address, cityId, image, signature } = this.state;
const fd = new FormData();
fd.append('image', image, image.name);
fd.append('gender', gender);
fd.append('phone', phone);
fd.append('address', address);
fd.append('cityId', cityId);
fd.append('signature', signature);
fd.append('_method', 'PATCH');
API.patch(`users/${this.props.id}`,
fd
)
.then(res => {
})
.catch(err => console.log(err))
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Laravel Echo 请求发送一些数据
window.Echo = new Echo({
broadcaster: 'pusher',
key: 'somekey',
wsHost: '127.0.0.1',
wsPort: 6001,
encrypted: false,
disableStats: true,
forceTLS: false,
authEndpoint: 'http://127.0.0.1:8000/broadcasting/auth',
'form-data': { // I tried data, dataForm, dataform
someData: '123', // this doesn't seem to work
},
});
Run Code Online (Sandbox Code Playgroud)
我已经看到如何向请求添加自定义标头
auth: {
headers: {
token: '123'
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法以类似的方式添加表单数据?
编辑
当我在 DevTools 中检查网络请求时,我可以看到formDataEcho 向服务器发送了两个属性。所以我认为必须有一种方法可以将附加属性附加到现有formData对象中
我正在使用 jest+nock+jsdom 模块来测试我的 React\Redux 应用程序。我需要测试这个异步操作函数:
export function updateUserPhoto (file, token) {
const data = new FormData()
data.append('file', file)
return dispatch => {
dispatch(userPutPhotoRequest())
return axios({
method: 'PUT',
headers: {
'x-access-token': token
},
data: data,
url: API_URL + '/user/photo'
})
.then(res => dispatch(userPutPhotoSuccess(res.data)))
.catch(err => dispatch(userPutPhotoFilure(err)))
}
}
Run Code Online (Sandbox Code Playgroud)
所以我使用 jsdom 向测试提供 FormData 和 File 对象:
const {JSDOM} = require('jsdom')
const jsdom = (new JSDOM(''))
global.window = jsdom.window
global.document = jsdom.window.document
global.FormData = jsdom.window.FormData
const File = jsdom.window.File
global.File = jsdom.window.File
Run Code Online (Sandbox Code Playgroud)
这是测试“上传照片”功能的方法: …
我想使用自定义文件属性将文件存储在服务器上。在客户端即时添加属性:
let file = new File([blob], 'flower.jpg')
file.custom = "another properties"
Run Code Online (Sandbox Code Playgroud)
这给了我
custom:"another properties"
lastModified:1524742832101
lastModifiedDate:Thu Apr 26 2018 13:40:32 GMT+0200 (W. Europe Daylight Time {}
name:"flower.jpg"
size:845941
type:"image/jpeg"
webkitRelativePath:""
Run Code Online (Sandbox Code Playgroud)
当我将此文件发送到我的节点服务器时,自定义属性被删除。我使用 formData 和 multer 进行文件上传。
fieldname: 'images',
originalname: 'flower.jpg',
encoding: '7bit',
mimetype: 'image/jpeg',
destination: 'uploads/',
size: 845941
Run Code Online (Sandbox Code Playgroud)
有没有办法存储包含自定义属性的文件?
当我尝试使用 fetch 和 React Native(expo SDK 37)在 POST 中进行 fetch API 调用时FormData,一切在 IOS 上都能完美运行,但在 Android 上会出现网络错误:[TypeError: Network request failed]。如果我使用 axios 而不是 fetch,我会遇到相同的错误(网络错误)。
如果我用空的 {} 替换 formData,它就可以工作。我已经检查了模拟器和物理设备(具有各种 Android 版本),并且尝试使用标头,但没有结果。我的 API 有一个有效的让我们加密证书
let url = 'https://my-prod-server/webservice';
let formData = new FormData();
formData.append('test1','test1');
formData.append('test2','test2');
let request = await fetch(url, {
headers: {
'Accept': 'application/json',
'Content-Type': 'multipart/form-data',
},
method: 'POST',
body: formData,
})
.then(response => response.json())
.catch(error => console.log('API ERROR: ', error));
return request;
Run Code Online (Sandbox Code Playgroud) value我在以下部分收到的错误消息formData.append(key, value);:
\n\n\'unknown\' 类型的参数不可分配给 \n\'string | 类型的参数 斑点\'。类型“{}”缺少\n类型“Blob”的以下属性:大小、类型、arrayBuffer、切片以及另外 2 个属性。
\n
代码
\nconst uploadSubtitle = async e => {\n e.preventDefault();\n const file = fileInput.current.files[0];\n const res = await Axios.get(`/api/movies/${currentMovie.movieId}/subtitles?user=${user.id}`);\n const { url, fields } = res.data;\n const newUrl = `https://${url.split(\'/\')[3]}.s3.amazonaws.com`;\n const formData = new FormData();\n const formArray = Object.entries({ ...fields, file });\n formArray.forEach(([key, value]) => {\n formData.append(key, value);\n });\n //... further code\n };\n\n\n<form onSubmit={uploadSubtitle}>\n <input type=\'file\' name=\'subtitle\' ref={fileInput} accept=\'.srt\' />\n <button onClick={uploadSubtitle}>Upload</button>\n</form>\nRun Code Online (Sandbox Code Playgroud)\n … 如何使用 Node.JS 内置的 FormData 上传文件fetch(不是node_fetch)?
form-data ×10
javascript ×4
reactjs ×3
axios ×2
fetch ×2
node.js ×2
ajax ×1
android ×1
angular ×1
angularjs ×1
expo ×1
file ×1
file-upload ×1
jestjs ×1
jquery ×1
laravel-echo ×1
multer ×1
php ×1
react-native ×1
redux ×1
typescript ×1