所以我要做的就是在我的本地存储中存储图片的dataUri。我只使用javascript和angularJS。此时没有jQuery。
图片是通过 type =“file”的输入上传的,其中包含“ input_file_0 ”等ID。
我能够将id和dataUri存储在我的$ scope.files变量中。所以,如果我说< [input_file_0:File, input_file_1:File, ...]
length:0
< input_file_0:File
lastModified: 1457515898145
lastModifiedDate: Wed Mar 09 2016 10:31:38 GMT+0100
name: "name-of-picture.png"
size: 206156
src: "data:image/png;base64,iVBORw0K..."
type: "image/png"
> input_file_1:File
,我会得到这样的输出:
/*
* stores $scope-values for longer reference in the localStorage
* @returns {undefined}
*/
$scope.storeDataInLocalStorage = function () {
if (typeof (localStorage) !== 'undefined') {
//storing file data
var data = {};
for (var i = 0; i <= $scope.files.length; i++) {
data.push({ 'file_input_'+i : $scope.files['file_input_'+i].src}) ;
}
localStorage.setItem('files', JSON.stringify(data));
}
/* No localstorage support */
else {
alert("Sorry. Localstorage is not supported");
}
};
localStorage.getItem('files') =
{'input_file_0' : "data:image/png;base64,iVBORw0K...",
'input_file_1 : "data:image/png;base64,iVBORw0K..."}
private ArrayList<Item> list;
...
public AdapterMain() {
list.add(new HeaderItem());
list.add(new NormalItem());
list.add(new HeaderItem());
list.add(new NormalItem());
}
public Item getItem(int position) {
return list.get(position);
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
if (viewType == Item.TYPE_NORMAL) {
View v = inflater.inflate(R.layout.adapter_normal, viewGroup, false);
return new NormalViewHolder(v);
} else if (viewType == Item.TYPE_HEADER) {
View v = inflater.inflate(R.layout.adapter_header, viewGroup, false);
return new HeaderViewHolder(v);
}
return null;
}
@Override
public int getItemViewType(int position) {
return list.get(position).getItemType();
}
@Override
public int getItemCount() {
return list.size();
}
public abstract class Item {
public static final int TYPE_HEADER = 0;
public static final int TYPE_NORMAL = 1;
public abstract void bindToViewHolder(RecyclerView.ViewHolder holder);
public abstract int getItemType();
}
但设置密钥不起作用。获取src属性可以正常工作。但是将变量作为键是行不通的。它总是用变量名替换它。
答案 0 :(得分:0)
我自己尝试了尝试过之前尝试过的东西但是现在突然发生了。也许有一些东西已经存储在本地,我没有'正确删除它。
这次我没有使用push,所以我的代码看起来像这样:
/*
* stores $scope-values for longer reference in the localStorage
* @returns {undefined}
*/
$scope.storeDataInLocalStorage = function () {
if (typeof (localStorage) !== 'undefined') {
//storing file data
var data = {};
for (var i = 0; i <= $scope.files.length; i++) {
data['input_file_'+i]= $scope.data['input_file_'+i].src;
}
localStorage.setItem('files', JSON.stringify(data));
}
/* No localstorage support */
else {
alert("Sorry. Localstorage is not supported");
}
};
还有人知道如何使用array.push()
吗?
答案 1 :(得分:0)
使用额外的对象在for循环中添加项目:
var data = [];
for (var i = 0; i <= $scope.files.length; i++) {
var o = {};
o[('file_input_' + i)] = $scope.files['file_input_'+i].src;
data.push(o);
}
localStorage.setItem('files', JSON.stringify(data));