作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在查看我能找到的所有问题,但似乎没有人遇到我的问题。
我正在运行 react-native 39,我想上传一张图片。看起来可以使用 FormData 上传它。
/**
* Polyfill for XMLHttpRequest2 FormData API, allowing multipart POST requests
* with mixed data (string, native files) to be submitted via XMLHttpRequest.
*
* Example:
*
* var photo = {
* uri: uriFromCameraRoll,
* type: 'image/jpeg',
* name: 'photo.jpg',
* };
*
* var body = new FormData();
* body.append('authToken', 'secret');
* body.append('photo', photo);
* body.append('title', 'A beautiful photo!');
*
* xhr.open('POST', serverURL);
* xhr.send(body);
*/
使用该方法,我只在请求正文中获取 [object Object]。使用 fetch 而不是 xhr 我得到了一些数据,但现在我期望的是,我无法从服务器获取图像
最佳答案
问题在于 Form 不知道存储在您尝试编码的对象中的信息是什么意思,因此它不会从设备中获取图片数据,而只是找出“正确的” photo
对象可能具有的表示形式,通常是一个字符串。在这种情况下 [object Object]
。当然,这不会被您的服务器接受。事实上,所有非原始类型的 JavaScript 都会发生这种情况。您应该先使用 JSON.stringify(photo)
将其转换为 JSON 字符串。
相反,您可以尝试以 FormData
可以理解的格式从相机胶卷中检索图像数据,例如,将图像编码为 base64 的字符串.这不是 React Native 附带的功能,但快速搜索检索到一些有前途的包。也许看看:
然后,一旦您拥有 base64 格式的图像,您就可以执行以下操作:
var photo = {
data: myBase64Data,
type: 'image/jpeg',
name: 'photo.jpg',
};
var body = new FormData();
body.append('authToken', 'secret');
body.append('photo', JSON.stringify(photo));
body.append('title', 'A beautiful photo!');
xhr.open('POST', serverURL);
xhr.send(body);
希望对您有所帮助。
关于react-native FormData 上传不发送正确的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41080211/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!