我的小项目有问题。基本上,我的网站将拥有用户帐户,每个帐户都允许将图像上传到服务器(比如画廊)。显然我不希望所有图像都出现在一个文件夹中,因此我实现了它,以便每个用户的图像只会到达各自的目录。
问题是,虽然用户可以上传,但我不知道怎么做,所以他们可以删除这些文件。
表“ImageDoc”有一列“imgfile”,用于存储文件名。
view.py
import java.util.HashMap;
import java.util.Scanner;
public class Letters {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Enter The Sentense");
String s = in.nextLine();
HashMap<Character,Integer> w = new HashMap<Character,Integer>();
for(int i=0; i < s.length(); i++){
w.put(s.charAt(i), w.get(s.charAt(i))==null?1:(w.get(s.charAt(i))+1));
}
for(char i:w.keySet()){
System.out.println(i+":"+w.get(i));
}
}
}
代码在上面工作,它保存到用户的相应目录。然而...
view.py
def image_galleria(request):
LOCATION = request.user.username + "/"
if request.method == 'POST':
form = ImgDocForm(request.POST, request.FILES)
if form.is_valid():
origin_form = form.cleaned_data["user_file"]
origin_name = origin_form.name
new_name = origin_name.split('.')[0] + ".jpg"
original_file = os.path.join(settings.MEDIA_ROOT+LOCATION, new_name)
original_name = ImageDoc(user_id=user_details.id, imgfile=new_name)
original_name.save()
我尝试了“.delete()”的各种组合,但这不起作用。知道我做错了吗?
答案 0 :(得分:0)
如果要删除文件,只需获取file
对象并将其删除...在您的情况下应该
imagex.delete()
答案 1 :(得分:0)
我想我是通过另一种方法解决的。供将来参考:
views.py
@login_required(login_url='sign_in')
def delete_image(request, image_id):
imagex = ImageDoc.objects.get(id=image_id)
imgfile = settings.MEDIA_ROOT + request.user.username + "/" + imagex.imgfile.name
os.remove(imgfile)
imagex.imgfile.delete()
imagex.delete()
return HttpResponseRedirect(reverse('image_galleria'))
相当粗略的解决方案,但我认为它有效。谢谢!